一、什么时候需要生成moc文件
当我们在test.h中使用Q_OBJECT宏定义时,需要使用Qt提供的moc.exe将test.h编译为moc_test.cpp,当编译为moc后,一般还需要在test.cpp中末尾处,添加一句#include "moc_test.cpp"
二、怎样生成moc文件
利用Qt安装目录下的moc.exe,比如:D:\Qt\Qt5.13.0\5.13.0\msvc2017_64\bin\moc.exe,即可生成moc。
生成命令:
moc.exe test.h -o moc_test.cpp
三、在VS中如何生成moc文件
一般在VS工程下,会有很多个源文件,VS允许我们对每个文件添加“自定义生成工具”。意思就是说,允许每个文件使用我们指定的编译方式。
这里我们,可以给需要生成moc的头文件,指定使用moc来进行编译。
在VS2017中,为源文件添加自定义生成工具,步骤如下:
(1) 选择“xxx.h”文件,右键选择“属性”->“配置属性”->“常规”->“项类型”,选择“自定义生成工具”;
(2) 点击“应用”,左边导航树中会新增一个条目“自定义生成工具”,展开它,选择下面的“常规”,分别填写如下3条内容;
这3条内容的含义,如下:
- 命令行
$(MOC) "%(FullPath)" -o "%(Filename)".moc
翻译过来,就是形如
moc.exe test.h -o test.moc
表示使用moc.exe将.h编译为moc文件。
- 说明
Moc%27ing %(FullPath)
就是VS编译该文件时,在输出窗口打印的信息,比如,编译test.h时,就会打印如下
Moc'ing D:\xx\yy\test.h
- 输出
%(Filename).moc
表示编译之后生成moc文件名称。
注意:
$(MOC)宏,表示moc.exe的路径,需要先进行添加后,再使用。
若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!
同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。