CMP0120¶
在版本 3.20 中新增。
WriteCompilerDetectionHeader
模組已被移除。
CMake 版本 3.1 至 3.19 提供此模組,透過重複使用 CMake 的前處理器檢查表中的資訊,為 cmake-compile-features(7)
建立 C++ 相容性層。然而
這些細化的功能已被 要求語言標準 (例如
cxx_std_11
) 的元功能取代。因此,不會新增新的細化功能檢查,專案將需要使用其他方法來有條件地使用新的 C++ 功能。此模組將 CMake 的一些實作細節直接暴露給 C++ 轉譯單元。
此模組的方法有效地提供了一個包含 CMake 的標頭檔,因此將標頭的版本與 CMake 的版本綁定在一起。許多專案發現
WriteCompilerDetectionHeader
的最佳使用方式是使用最新版本的 CMake 在本地手動產生其標頭,然後將其與專案原始碼捆綁在一起,以便可以在舊版本的 CMake 中使用。
由於包括上述原因,CMake 3.20 及更高版本傾向於不提供 WriteCompilerDetectionHeader
模組。此策略為尚未從中移植出來的專案提供相容性。使用此模組的專案應更新為停止使用它。替代方案包括
在專案的原始碼中捆綁一份產生的標頭副本。
使用第三方替代方案,例如 CC0 授權的 Hedley。
放棄對過舊而無法原生提供這些功能的編譯器的支援。
此策略的 OLD
行為是為了使已棄用的 WriteCompilerDetectionHeader
模組能夠運作。NEW
行為是使模組的包含失敗,如同它不存在一樣。
此策略在 CMake 版本 3.20 中引入。它可以透過 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
策略的 OLD
行為依 定義已棄用
,並可能在未來版本的 CMake 中移除。