Arn*_*aud 6 c++ cmake visual-studio
我该怎么做才能WholeProgramOptimization从CMake 启用?
这是我尝试过的:
int main(){return 0;}我创建了一个包含以下内容的C:\ Wpo\CMakeLists.txt文件:
CMAKE_MINIMUM_REQUIRED (VERSION 3.10)
PROJECT(Wpo)
ADD_EXECUTABLE(Wpo "../Wpo.cpp")
TARGET_COMPILE_OPTIONS(Wpo PRIVATE "$<$<CONFIG:Release>:/GL>")
SET_TARGET_PROPERTIES(Wpo PROPERTIES LINK_FLAGS_RELEASE "/LTCG")
Run Code Online (Sandbox Code Playgroud)我打开了一个命令行并创建了我的Visual Studio解决方案:
cd C:\Wpo\Build
cmake ..
Run Code Online (Sandbox Code Playgroud)但是当我在Visual Studio中打开我的解决方案时,没有设置整个程序优化.有趣的是WholeProgramOptimization,vcxproj文件中有一个:
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AssemblerListingLocation>Release/</AssemblerListingLocation>
<CompileAs>CompileAsCpp</CompileAs>
<ExceptionHandling>Sync</ExceptionHandling>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<Optimization>MaxSpeed</Optimization>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<WarningLevel>Level3</WarningLevel>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ObjectFileName>$(IntDir)</ObjectFileName>
<DebugInformationFormat></DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
Run Code Online (Sandbox Code Playgroud)
如果我从项目的属性中手动选择"整个程序优化",则会在vcxproj文件的另一部分中添加一个条目:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
WholeProgramOptimization部分添加到错误的位置.任何帮助将不胜感激.
Visual Studio 项目中有3 个地方可以使用整个程序优化设置 -
1)在项目级别(项目→常规选项卡)
这是启用整个程序优化的便利元设置。
在项目 XML 中,它位于<PropertyGroup>/<WholeProgramOptimization>
2) 在编译器级别(C/C++ → 优化选项卡)
这是实际/GL设置,默认为项目级设置。
在项目XML它位于<ItemDefinitionGroup>/ <ClCompile>/<WholeProgramOptimization>
3)在链接器级别(链接器→优化选项卡)
这是实际/LTCG设置,默认为项目级设置。
在项目XML它位于<ItemDefinitionGroup>/ <Link>/<LinkTimeCodeGeneration>
以下 CMake 命令不会WholeProgramOptimization在项目级别设置,而是在编译器和链接器级别设置。这就是“常规”选项卡中的“便利”设置为空的原因。然而,净效应是相同的。WholeProgramOptimization 已开启。
set_target_properties(Wpo PROPERTIES COMPILE_FLAGS "$<$<CONFIG:Release>:/GL>")
set_target_properties(Wpo PROPERTIES LINK_FLAGS "$<$<CONFIG:Release>:/LTCG>")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |