CheckIPOSupported¶
在版本 3.9 中新增。
檢查編譯器是否支援程序間優化 (IPO/LTO)。在啟用 INTERPROCEDURAL_OPTIMIZATION
目標屬性之前使用此命令。
- check_ipo_supported¶
check_ipo_supported([RESULT <result>] [OUTPUT <output>] [LANGUAGES <lang>...])
選項如下
RESULT <result>
如果編譯器支援 IPO,則將
<result>
變數設定為YES
,否則設定為NO
。如果未提供此選項,則如果編譯器不支援 IPO,則該命令將發出嚴重錯誤。OUTPUT <output>
使用任何錯誤的詳細資訊設定
<output>
變數。LANGUAGES <lang>...
指定要檢查其編譯器的語言。支援語言
C
、CXX
和Fortran
。
當 CMP0069
設定為 OLD
時,使用此模組沒有意義,因此在這種情況下,模組將返回錯誤。有關詳細資訊,請參閱政策 CMP0069
。
在版本 3.13 中新增:新增對 Visual Studio 產生器的支援。
在版本 3.24 中新增:此檢查使用呼叫者的 CMAKE_<LANG>_FLAGS
和 CMAKE_<LANG>_FLAGS_<CONFIG>
值。 請參閱政策 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()