gpt4 book ai didi

c++ - 使用 MSVC Express 的 qmake 中的 header 依赖项

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:26 26 4
gpt4 key购买 nike

我在 Windows 上使用 QtCreator,使用 MSVC 编译器(来自 Visual c++ 快速版的编译器)和 qt 4.5.2 开源。

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

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

提前致谢

最佳答案

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

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

在 qmake 生成的 Makefile 中,包含有问题的 h 文件的我的 cpp 文件有一条规则明确地将 h 文件列为依赖项。不知道 qmake 是怎么做到的。我建议查看 qmake 为您生成的 makefile,并查看您的一个 cpp 文件的规则是什么样的。[/edit]

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

关于c++ - 使用 MSVC Express 的 qmake 中的 header 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295773/

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