我正在Qt Creator中编译C代码,我需要查看预处理器的输出。
我向make添加了-E标志,但我没有看到*.i文件:
mingw32-make.exe -e -w in \qt\qt-build-desktop
请帮忙。
我正在Qt Creator中编译C代码,我需要查看预处理器的输出。
我向make添加了-E标志,但我没有看到*.i文件:
mingw32-make.exe -e -w in \qt\qt-build-desktop
请帮忙。
-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”,并且几乎肯定需要在尝试生成预处理输出之前运行“清理项目”构建。