在Visual Studio中通过moc给Qt配置预编译头文件(Predefined Headers)

来源:互联网 发布:电脑windows是什么意思 编辑:程序博客网 时间:2024/04/28 01:03

我创建Qt工程的方法是先用QCreator创建一个简单的程序,设计一些UI,然后用qmake把这个pro工程文件转成Visual Studio的vcproj工程文件。

 

这样的vcproj文件是没有使用预编译头的,当然可以很容易地的去Visual Studio中修改设置,这里我创建了一个名为pch.h的文件作为头文件。现在碰到的问题是,Qt使用moc来生成cpp文件并加入编译之中,比如你有一个mainwindow.h,然后moc会生成一个moc_mainwindow.cpp,如果这个cpp文件不引用指定的预编译头文件,则会出现这样的错误:

fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "pch.h"' to your source?

 

当然可以自己手动的将 #include "pch.h"加入该文件的前面,但是这个moc_mainwindow.cpp是动态生成的,在文件头部有一个很大的警告:WARNING! All changes made in this file will be lost!那如何让其自动加入pch.h呢?在网上查阅了一些英文的资料,居然没有人写。下面是我的方法:

我先进入命令行,然后用moc -help查看moc的帮助:

这样我就将 "-fpch.h" 放入mainwindow.h的custom build step设置的comman line参数中。但是原先的包含的mainwindow.h会被覆盖,这样我再加入-fmainwindow.h,问题解决。因此最终在moc后面加入的参数是 “-fpch.h -fmainwindow.h”。