Jef*_*rey 2 xcode qt moc qobject
我在Xcode中创建C++项目,它链接到Qt框架.你好世界计划运作良好.当我添加从QObject派生的类并添加Q_OBJCET宏时,会出现链接错误.
这堂课是
MyObject.h
#ifndef MyObject_h
#define MyObject_h
#include <QtCore/QObject>
class MyOBject : public QObject
{
Q_OBJECT
public:
MyOBject();
};
#endif
Run Code Online (Sandbox Code Playgroud)
MyObject.cpp
#include "MyObject.h"
MyOBject::MyOBject()
{
}
Run Code Online (Sandbox Code Playgroud)
我知道我应该先使用moc编译MyObject.h,然后将生成的moc_MyObject.cpp添加到Xcode项目中.
在Microsoft Visual Studio中,我可以配置此头文件以使用moc自定义工具进行编译.并将生成cpp文件添加到VS项目.
但这是Xcode.我的问题是:在Xcode中是否有相同的平均值来编译包含Q_OBJECT宏的头文件?
小智 6
以下是您在Xcode 6中的操作方法:
选择目标,然后在构建规则中创建新的自定义规则.将"Process"下拉列表设置为"名称匹配的源文件"并在其*.h旁边键入.将"使用"下拉菜单设置为"自定义脚本:",然后在脚本中键入与此类似的内容:
/path/to/your/Qt/bin/moc ${INPUT_FILE_PATH} -o ${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}_moc.cpp
Run Code Online (Sandbox Code Playgroud)
您必须将路径更改为moc可执行文件的位置.现在将"输出文件"设置为:
${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}_moc.cpp
Run Code Online (Sandbox Code Playgroud)
这就是自定义规则.
现在要使用此规则编译头文件.当您的目标仍然被选中时,请转到"构建阶段".展开"编译源"部分,点击底部的"+"按钮.查找并添加包含Q_OBJECT类的头文件.如果您在那里找不到它们,请先将这些标题添加到项目中.
就是这样,Xcode将在这些头上运行moc,它会理解moc的输出是.cpp,需要编译并链接到你的应用程序并为你做.
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |