我在 MacOS 10.13.3 上使用 Xcode 9 作为我的 IDE,并试图在我的 Xcode 项目中包含 Qt 5.10。我已经用 Homebrew 安装了 Qt(带有文档和示例),并在 QtCreator 中运行了其中的许多。到目前为止一切正常。
我的 Xcode 项目是一个广泛而复杂的项目,它的开发已经活跃了几年,所以切换到 QtCreator 或改变我的项目结构不是一个选择。我真的需要将 Qt 添加到我现有的 Xcode 项目中,鉴于 Qt 是一个软件开发框架,恕我直言,这应该是一件很自然的事情。但是我还没有能够做到这一点。好处是,在这个过程中,我学到了很多关于 Qt 及其生态系统的知识。我现在知道如何使用 qmake,如何在 QtCreator 中设置并成功编译项目以及如何使用 qmake 从 QtCreator 创建 Xcode 项目。正如我所说,我一直在运行许多 Qt 示例,并阅读了几乎所有我能找到的关于这个主题的文档、博客和 SO 帖子。令我惊讶的是,我在网上的任何地方都找不到直接解决这个问题的方法。
到目前为止,我已经在我的 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 是如此强大和完整的框架。我希望有人能够提供帮助。 谢谢。
最佳答案
1/除了设置 Qt 库和头文件的正确路径(根据您所说的已经完成的),您还需要在您自己的 Qt 类上调用 moc(元对象编译器),其中包括 Q_OBJECT 宏。 (基本上你制作的每个类都使用信号/插槽系统)。
MOC http://doc.qt.io/qt-5/moc.html
这一步必须在编译项目之前完成,并且结果(cpp 生成的 moc 文件)必须被编译和链接。
现在我不是 XCode 和 MacOS 开发方面的专家,但可以肯定的是,您有办法在构建过程中添加自定义步骤来执行此操作
2/对于 UIC 文件:大致遵循解释的内容 here (Preetam 的回答,不是经过验证的答案)以获取您也必须包含在项目中的 .cpp 和 .h 文件。
希望这个答案能对您有所帮助,并为您指明正确的方向。
这是一篇更详细地解释了我所解释的内容的帖子: https://fmilicchio.bitbucket.io/2013/01/xcode-and-qt4-and-qt5/?
关于c++ - 将 Qt 导入现有的 Xcode 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49471362/