c++ - 将 Qt 导入现有的 Xcode 项目

标签 c++ xcode qt

我在 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/

相关文章:

objective-c - 在 awakeFromNib 上创建 subview

ios - 当我在 XCode iOS 中触发推送通知时出现奇怪的字符

Qt 布局比应有的大

c++ - 关于 C++ 中的 "bind"

c++ - 如何通过串行终端检索数据而不破坏其在 GNU ARM 嵌入式中的基本值(value)?

c++ - 为什么 C++ 允许我们在声明变量时将变量名括在括号中?

c++ - 如何制作一个对象只能动态分配的C++类?

ios - 使用Xcode 10旧版版本进行归档和提交

c++ - 未定义的类引用

qt - 如何获取在特定目录中创建新文件或修改某个文件的授权信息?