【问题标题】:How to output preprocessed code AND compile it (Visual Studio)如何输出预处理代码并编译它(Visual Studio)
【发布时间】:2011-12-11 04:37:27
【问题描述】:

我正在从 Visual Studio 生成预处理器输出 (.i),但也想进行实际构建。是否有标志的组合既可以输出 .i 文件,又不会阻止编译器正常进行构建?

这目前只是 C++,但以后可能希望将其与 CUDA 一起使用,因此更喜欢在 Visual Studio 中工作的答案,而不是需要命令行(除非它也适用于 CUDA)。

这样做的目的是节省执行 Project->Properties->Config Props->C/C++->Preprocessor->Generate Preprocessed File Yes/No plus Rebuild 的时间。特别是预处理器必须运行两次对我来说很烦人,所以在第 1 部分中以某种方式生成 .i 文件然后在第 2 部分中编译该文件的解决方案就可以了。

我使用的 Visual Studio 的确切版本是 VS 2008 Express

【问题讨论】:

    标签: c++ visual-studio cuda c-preprocessor


    【解决方案1】:

    您可以添加自定义构建步骤或新目标以在根据定义构建代码后转储预处理器输出的转储预处理器输出。

    【讨论】:

    • 无论哪种方式,构建都必须读取文件两次?但这是缓慢的部分!
    • 自定义目标可以 cpp 构建 *.i,只要它依赖于转储预处理器的目标。
    • blink 哇...这可以工作,并且由于链接器知道更多信息,可能会生成更高效的文件...
    • OK 很好 - 在没有 .bat 文件的情况下管理它。这是我所做的: 1. 将 .i 文件添加到项目中 2. 在解决方案资源管理器中,右键单击 .i 文件->配置属性->工具->C/C++ 编译器工具 3. 重建解决方案(Ctrl-Alt -F7) - 这将失败,因为它将复制相同的编译器选项,包括预处理器输出 4。重复步骤 2,现在您应该在子树中看到所有正常的编译器选项,选择预处理器并关闭 .我归档(显然) 5. 再次构建 - 现在它可以工作了 - 欢呼
    【解决方案2】:

    您可以创建一个执行预处理的自定义构建配置,然后定义一个批处理构建来构建预处理版本,然后是实际编译/链接的版本。

    【讨论】:

    • 好吧,这听起来很理想。 “自定义构建配置”是指前一个人提到的“自定义构建步骤”吗?如果是这样,这里有一个很好的进展:-)
    【解决方案3】:

    使用开关 /P Example- cl /C sample.c

    上面会生成一个同名的.I文件(sample.I)。现在要编译 .I 文件,只需将 .I 文件重命名为 .C 然后执行 cl /c 即可编译并生成目标文件。

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多