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

时间:2016-11-18 01:20:24

标签: premake

我有一个项目,其中包含一个相当性能关键的文件,并且为了使程序的其余部分的调试可行,它必须至少使用一些优化进行编译,特别是内联。我曾经在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>

是否可以使用预制,或是否需要修补以自动禁用任何配置或优化文件的基本运行时检查?

1 个答案:

答案 0 :(得分:0)

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

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"

希望有所帮助!