CMP0120¶
在 3.20 版本中新增。
WriteCompilerDetectionHeader
模組已移除。
CMake 3.1 到 3.19 版本提供了此模組,通過重複使用 CMake 的預處理器檢查表中的資訊,為 cmake-compile-features(7)
生成 C++ 相容層。然而,
這些細化的功能已被用於 要求語言標準 的元功能(meta-features)所取代,例如
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 版本中移除。