【发布时间】:2010-12-20 19:49:14
【问题描述】:
我正在 Qt Creator 中编译 C 代码,我需要查看预处理器的输出。
我在 make 中添加了 -E 标志,但我没有看到 *.i 文件:
mingw32-make.exe -e -w in \qt\qt-build-desktop
请帮忙。
【问题讨论】:
标签: c qt gcc c-preprocessor qmake
我正在 Qt Creator 中编译 C 代码,我需要查看预处理器的输出。
我在 make 中添加了 -E 标志,但我没有看到 *.i 文件:
mingw32-make.exe -e -w in \qt\qt-build-desktop
请帮忙。
【问题讨论】:
标签: c qt gcc c-preprocessor qmake
-E 是 gcc 选项,而不是 make 选项,因此将其传递给 make 不会做任何事情。此外,使用 -E 可以很好地处理单个文件,但会破坏您的构建,因为没有生成正确的 .o 文件(它包含预处理的源)。 工作正常的方法是将以下内容添加到 .pro 文件中:
QMAKE_CXXFLAGS += -save-temps
现在,如果您构建项目,源文件 foo.cpp 的预处理源将保留为 foo.ii。 (在 OS X 上使用 make+gcc 进行测试,我认为它也适用于 mingw)。
编辑:刚刚得知 MSVC 的等效标志是
QMAKE_CXXFLAGS += -P
【讨论】:
我可以让 Qt Creator 使用 .pro 文件中的以下一个(或多个)选项生成预处理文件:
QMAKE_CFLAGS_DEBUG += -E
QMAKE_CFLAGS_RELEASE += -E
QMAKE_CXXFLAGS_DEBUG += -E
QMAKE_CXXFLAGS_RELEASE += -E
然而,有点丑陋的是,它没有将输出放入.i 文件中,而是将它们放入.o 文件中(链接器不太喜欢...)。由于这可能是故障排除的“一次性”情况,因此我没有研究如何清理它。
您可能需要在重新构建之前重新运行“qmake”,并且几乎可以肯定,在尝试生成预处理输出之前,您需要运行“清洁项目”构建。
【讨论】: