gpt4 book ai didi

xcode - Xcode中如何用Q_OBJECT宏编译头文件?

转载 作者:行者123 更新时间:2023-12-01 08:23:47 25 4
gpt4 key购买 nike

我在 Xcode 中创建了链接到 Qt 框架的 C++ 项目。 Hello World 程序运行良好。当我添加一个派生自QObject的类并添加Q_OBJCET宏时,出现链接错误。

类是

MyObject.h

#ifndef MyObject_h
#define MyObject_h

#include <QtCore/QObject>

class MyOBject : public QObject
{
Q_OBJECT

public:
MyOBject();

};


#endif

我的对象.cpp

#include "MyObject.h"

MyOBject::MyOBject()
{
}

我知道我应该先使用 moc 编译 MyObject.h,然后将生成的 moc_MyObject.cpp 添加到 Xcode 项目中。

在 Microsoft Visual Studio 中,我可以将此头文件配置为使用 moc 自定义工具进行编译。并将生成的cpp文件添加到VS工程中。

但这是 Xcode。我的问题是:Xcode 中是否有等效的方法来编译包含 Q_OBJECT 宏的头文件?

最佳答案

这是在 Xcode 6 中的做法:

选择您的目标并在构建规则中创建一个新的自定义规则。将“进程”下拉菜单设置为“名称匹配的源文件”,然后在旁边输入 *.h。将“使用”下拉菜单设置为“自定义脚本:”,然后在脚本中键入类似于此的内容:

/path/to/your/Qt/bin/moc ${INPUT_FILE_PATH} -o ${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}_moc.cpp

您必须将路径更改为您的 moc 可执行文件所在的位置。现在将“输出文件”设置为:

${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}_moc.cpp

这就是自定义规则。

现在获取要使用此规则编译的 header 。当您的目标仍处于选中状态时,转到“构建阶段”。展开“编译源”部分,点击底部的“+”按钮。查找并添加其中包含 Q_OBJECT 类的头文件。如果您在其中找不到这些 header ,请先将它们添加到您的项目中。

就是这样,Xcode 然后将在这些 header 上运行 moc,它会理解 moc 的输出是一个 .cpp,需要编译并链接到您的应用程序并为您完成。

关于xcode - Xcode中如何用Q_OBJECT宏编译头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com