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