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>...

指定要檢查其編譯器的語言。支援語言 CCXXFortran

CMP0069 設定為 OLD 時,使用此模組沒有意義,因此在這種情況下,模組將返回錯誤。有關詳細資訊,請參閱政策 CMP0069

在版本 3.13 中新增:新增對 Visual Studio 產生器的支援。

在版本 3.24 中新增:此檢查使用呼叫者的 CMAKE_<LANG>_FLAGSCMAKE_<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()