【问题标题】:Preprocessor output on Qt CreatorQt Creator 上的预处理器输出
【发布时间】: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


    【解决方案1】:

    -E 是 gcc 选项,而不是 make 选项,因此将其传递给 make 不会做任何事情。此外,使用 -E 可以很好地处理单个文件,但会破坏您的构建,因为没有生成正确的 .o 文件(它包含预处理的源)。 工作正常的方法是将以下内容添加到 .pro 文件中:

    QMAKE_CXXFLAGS += -save-temps
    

    现在,如果您构建项目,源文件 foo.cpp 的预处理源将保留为 foo.ii。 (在 OS X 上使用 make+gcc 进行测试,我认为它也适用于 mingw)。

    编辑:刚刚得知 MSVC 的等效标志是

    QMAKE_CXXFLAGS += -P
    

    【讨论】:

      【解决方案2】:

      我可以让 Qt Creator 使用 .pro 文件中的以下一个(或多个)选项生成预处理文件:

      QMAKE_CFLAGS_DEBUG += -E
      
      QMAKE_CFLAGS_RELEASE += -E
      
      QMAKE_CXXFLAGS_DEBUG += -E
      
      QMAKE_CXXFLAGS_RELEASE += -E
      

      然而,有点丑陋的是,它没有将输出放入.i 文件中,而是将它们放入.o 文件中(链接器不太喜欢...)。由于这可能是故障排除的“一次性”情况,因此我没有研究如何清理它。

      您可能需要在重新构建之前重新运行“qmake”,并且几乎可以肯定,在尝试生成预处理输出之前,您需要运行“清洁项目”构建。

      【讨论】:

      • 感谢您的回复。由于副作用,我无法使用它,所以我使用了上面发布的解决方案
      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 2011-08-21
      • 2012-10-28
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多