我在MacOS 10.13.3上,使用Xcode 9作为我的IDE,并试图将QT5.10包含在我的Xcode项目中。我已经用Homebrew安装了Qt (包括文档和示例),并在QtCreator中运行了其中的许多。到目前为止,一切都很顺利。
我的Xcode项目是一个广泛而复杂的项目,它的开发已经进行了几年,所以切换到QtCreator或者改变我的项目的结构是不可能的。我真的需要将Qt添加到我现有的Xcode项目中,考虑到Qt是一个软件开发框架,IMHO应该是一件很自然的事情。然而,我还未能做到这一点。好处是,在这个过程中,我学到了很多关于Qt及其生态系统的知识。我现在知道如何使用qmake,如何在QtCreator中设置并成功编译项目,以及如何使用qmake从QtCreator创建Xcode项目。正如我所说的,我已经运行了许多Qt示例,阅读了几乎每一篇文档、博客以及关于这个主题的文章。令我惊讶的是,我在网上任何地方都没有找到这个问题的直接解决方案。
到目前为止,我已经在我的Xcode环境中包括了QtCore.framework、QtWidgets.framework和QtGui.framework,配置了具有正确搜索路径的Xcode (Qt查找其文件和框架),并在代码中包含了正确的Qt头。然而,在构建我的目标时,我会得到一系列毫无意义的编译错误。
基本上--如果我的理解是正确的--我不能只导入我需要的Qt组件和框架,并在Xcode中设置正确的路径,就像我对任何其他框架所做的那样。Qt‘特性’是一个使用MOC和UIC的预处理步骤,它使它有别于其他工具。因此,我检查了qmake的输出,构建系统生成了两个文件-- qt_makeqmake.mak和qt_preprocess.mak,我认为这两个文件负责代码生成步骤。基本上,这就是我不知道如何转换为我的Xcode环境的东西。
如果我的方法不正确,请随时告诉我。我愿意听取任何意见或建议。我真的很想将Qt集成到我的项目中,因为Qt是一个强大而完整的框架。我希望有人能帮忙。谢谢。
发布于 2018-03-27 00:15:20
1/除了为Qt库和头文件设置正确的路径之外,还需要在包含Q_OBJECT宏的Qt类上调用moc ()。(基本上每个使用信号/时隙系统的类)。
MOChttp://doc.qt.io/qt-5/moc.html
必须在编译项目之前完成此步骤,并且必须编译和链接结果( cpp生成的moc文件)。
现在我不是XCode和MacOS开发方面的专家,但是可以肯定的是,您有一种方法可以在构建过程中添加一个自定义步骤。
2/对于UIC文件:大致按照解释的这里 ( Preetam的答案,而不是验证的答案)获得一个.cpp和一个.h文件,这两个文件必须也包含在项目中。
希望这个答案能帮助你,为你指明正确的方向。
这里有一篇文章更详细地解释了我解释的内容:https://fmilicchio.bitbucket.io/2013/01/xcode-and-qt4-and-qt5/?
https://stackoverflow.com/questions/49471362
复制