我打算为Mac和Windows构建一个GUI应用程序.我一直在研究技术选择,如语言,库和构建工具,这样我就可以在两个平台之间共享尽可能多的代码.
主要要求是:
我的帖子的长度已经失控,所以我把我的问题作为摘要移到了顶部,而上下文更进一步.
对于Mac,我排除了使用跨平台GUI库(如QT),因为它似乎不能在Mac上提供原生外观(看起来不合适和/或难以编写跟随Apple的应用程序)人机界面指南).wxWidgets说它使用本机库,但是这篇文章提到wxPython可能使用私有的Objective-C调用,并且不太可能被批准用于Mac App Store.最后,即使外观正确,两个平台的布局可能仍需要改变.
因此,我计划在Mac界面中使用原生Cocoa GUI库,但仍考虑将wxWidgets用于Windows GUI.
对于主应用程序逻辑来说,似乎我最好的语言选择是C++或Python.显然,使用Python编写跨平台代码比使用C++更容易,但总是存在权衡.
蟒蛇
优点:更快写入和更容易维护.强大的跨平台库,可以大大缩短开发时间.
缺点:使用Python意味着使用PyObjC,它已经超过一年没有更新(从svn可以看出),我不清楚它是否仍然适用于未来版本的Xcode和OSX.此外,使用PyObjc和py2app设置任何理智的构建配置,并在Xcode之外使用xibs进行GUI,这是一场噩梦.
C++
优点:更容易在Mac和Windows上设置构建配置和依赖项.运行速度比Python快得多,但在我的情况下性能并不是一个大问题.
缺点:我不懂C++.我对C非常好,但看起来这并不能帮助我写好C++.我的总体印象是编写跨平台C++要困难得多,但我可能错了.有很多关于晦涩的错误的帖子.虽然Boost看起来很有希望.
如果在两个平台上使用C++作为主要语言,那么设置起来似乎很简单.如果我使用Python,在Windows上设置似乎也很简单,因为我会使用wxWidgets进行GUI和py2exe部署.
至于Mac和Python,标准选择似乎是pyobjc和py2app.不幸的是,我没有找到任何使用pyibapp构建配置的例子,它使用XIB和Cocoa库而不是QT或wxWidgets.我不希望Xcode管理构建,因为我更喜欢将Python文件和应用程序资源放在Xcode项目目录之外.这将大大简化Windows的设置并使文件树更清晰.
关于QT的编辑:我再看看QT,花了几个小时和QT设计师一起玩.基本UI元素(按钮,文本字段,标签)看起来与Cocoa元素相同.我轻松地将QWindow和QTabView与一些元素组合在一起,它看起来像一个Cocoa应用程序.但是,有一些负面因素:
我知道我很挑剔,但需要挑剔才能做出好的UI.整体QT似乎是Windows的一个很好的解决方案,但我想我会坚持使用Cocoa for Mac.我对现有程序进行了一些额外的研究,发现VLC,Chrome和Transmission都为Mac制作原生GUI,而VLC使用QT for Windows,Chrome使用自定义框架,而Transmission使用GTK +和QT for Linux.
我想我已经决定使用Cocoa GUI for Mac和Qt或wxWidgets for Windows,但仍然在C++和Python之间分配共享逻辑.
我想,给定一个 pom.xml 文件,扩展传递依赖项,对于每个直接和传递依赖项,列出 maven 从中获取它的存储库。
有了maven-dependency-plugin我能做的
mvn dependency:tree 获取传递依赖树,但不包含存储库信息
mvn dependency:list-repositories 获取使用的存储库列表,但不包含依赖信息
mvn dependency:get -Dartifact=<...> 获取单个工件和传递依赖项,但它似乎获取的比需要的多得多,我不知道我真正关心的是哪个。