在预生成的VS解决方案中优化单个文件



我有一个项目,其中包含一个相当性能关键的文件,为了使程序的其余部分调试可行,必须至少使用一些优化来编译它,特别是内联。我曾经在VS2010中手动执行此操作,但现在我想在由premake5生成的VS2015项目中实现相同的功能。

我知道我应该为这个文件设置一个configuration块,看起来像这样:

filter { "configurations:Debug*" }
  configuration "critical_file.cpp"
    -- Optimization settings go here
  configuration {}
filter {}

我尝试了各种各样的事情:optimize "Speed"optimize "Full"不工作,因为VS2015假设/RTC1,这与/O2/O4:

不兼容
7>cl : Command line error D8016: '/Ox' and '/RTC1' command-line options are incompatible

在此块中添加flags { "NoRuntimeChecks" }没有影响。

我还尝试添加inlining "auto"来至少启用函数内联,但这并没有为这个文件生成任何特定的配置。

我想我最终想要的是这样的:

<ClCompile Include="critical_file.cpp">
  <Optimization Condition="'$(Configuration)'=='Debug'">Full</Optimization>
  <BasicRuntimeChecks Condition="'$(Configuration)'=='Debug'"></BasicRuntimeChecks>
</ClCompile>

这是可能的预制,还是需要打补丁,以自动禁用任何配置或优化文件的基本运行时检查?

如果我理解正确的话,我想你可能在寻找这样的东西:

project "MyProject"
    flags "NoRuntimeChecks"
    filter { "files:critical_file.cpp" }
       optimize "Speed"

如果您想分别优化调试和发布版本,它看起来像:

project "MyProject"
    flags "NoRuntimeChecks"
    filter { "configurations:Debug", "files:critical_file.cpp" }
       optimize "Speed"
    filter { "configurations:Release", "files:critical_file.cpp" }
       optimize "Full"

希望有帮助!

最新更新