CheckIPO支持¶
在 3.9 版本加入.
检查编译器是否支持过程间优化 (IPO/LTO)。在启用 INTERPROCEDURAL_OPTIMIZATION 目标属性之前使用它。
- check_ipo_supported¶
check_ipo_supported([RESULT <result>] [OUTPUT <output>] [LANGUAGES <lang>...])选项是:
结果<结果>如果编译器支持 IPO,则将
<result>变量设置为YES,否则设置为NO。如果未给出此选项,则如果不支持 IPO,该命令将发出致命错误。输出<输出>使用有关任何错误的详细信息设置
<output>变量。语言 <lang>...指定要检查其编译器的语言。支持语言“C”、“CXX”和“Fortran”。
当 CMP0069 设置为 OLD 时使用此模块没有任何意义,因此在这种情况下模块将返回错误。有关详细信息,请参阅政策:policy:CMP0069。
在 3.13 版本加入: 添加对 Visual Studio 生成器的支持。
在 3.24 版本加入: 检查使用调用者的 CMAKE_<LANG>_FLAGS 和 CMAKE_<LANG>_FLAGS_<CONFIG> 值。请参阅政策:policy:CMP0138。
例子¶
check_ipo_supported() # fatal error if IPO is not supported
set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
# Optional IPO. Do not use IPO if it's not supported by compiler.
check_ipo_supported(RESULT result OUTPUT output)
if(result)
set_property(TARGET foo PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
else()
message(WARNING "IPO is not supported: ${output}")
endif()