使用MSVC Express在qmake中的头部依赖关系

时间:2009-08-18 18:49:58

标签: c++ qt4 qmake

我在Windows上使用QtCreator使用MSVC编译器(Visual c + + Express编译器)和qt 4.5.2开源。

当我修改项目中的标题并按下build all时,实际上没有构建任何内容,只有当我修改.cpp文件时,修改后的cpp才会被编译。

这导致每次我必须更改几个.cpp文件使用的一些头文件时,我必须重建一个完整的项目。有办法避免这种行为吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

你的头文件是否在.pro文件的HEADERS变量中列出?我认为在HEADERS中列出头文件也需要在其中获取MOC的类。

** [编辑] **没关系,我用Linux上的Qt 4.5.2 SDK中的Qt Creator 1.2.1测试了这个,当我'触摸'头文件时,它依赖的cpps被重新编译,标题是否列在HEADER列表中。

在qmake生成的Makefile中,我的cpp文件包含有问题的h文件,其规则明确地将h文件列为依赖项。不确定qmake是如何做到的。我建议你查看为你生成的makefile qmake,看看你的某个cpp文件的规则是什么样的。 [/ edit]

[再次编辑,现在开始讨论主题] **通常在调用gcc的基于make的构建系统中,通过让gcc为你做这个来生成cpps包含的头文件的依赖关系信息,使用 - M旗。 cl.exe(微软C ++编译器)不会产生.d文件,无论你多么擅长它,所以使用它的/ showincludes选项有点常见,然后用脚本解析输出以将其转换为。 d文件所以make可以包含它(很多人跳过这一步,并且在使用cl.exe的基于make的构建中没有正确的依赖性检查,因为它是一种PITA)。 然而,我不认为qmake会做任何类似的事情来获取依赖信息,因为qmake正在生成一个makefile,它反过来调用编译器,并且在那时,依赖信息(至少在我看过的makefile是硬编码的。 [/ edit] **