CMP0119

在版本 3.20 中新增。

LANGUAGE 原始檔屬性會明確地依照指定的語言編譯。

LANGUAGE 原始檔屬性的文件說明其意為該原始檔是以指定的語言撰寫。在 CMake 3.19 及更早的版本中,設定此屬性會導致 CMake 使用指定語言的編譯器來編譯該原始檔。但是,它僅會傳遞明確的標誌,告知編譯器將原始碼視為 CXX 語言,這僅適用於 MSVC-like、XL 和 Embarcadero 編譯器。CMake 3.20 及更新版本偏好也明確地告知編譯器使用指定的語言,並使用如 -x c 等標誌,適用於所有已知此類標誌的編譯器。

此策略為尚未更新以預期此行為的專案提供相容性。例如,某些專案會在組合語言 .S 原始檔上設定 LANGUAGE 屬性為 C,以便使用 C 編譯器編譯它們。此類專案應更新為使用 enable_language(ASM),CMake 在相關平台上通常會選擇 C 編譯器作為組合器。

此策略的 OLD 行為是以其未記載的含義來解釋 LANGUAGE <LANG> 屬性,即「使用 <LANG> 編譯器」。此策略的 NEW 行為是以其已記載的含義來解釋 LANGUAGE <LANG> 屬性,即「以 <LANG> 原始碼編譯」。

此策略在 CMake 版本 3.20 中引入。它可透過 cmake_policy()cmake_minimum_required() 來設定。如果未設定,CMake 不會 發出警告,並使用 OLD 行為。

注意

策略的 OLD 行為是 根據定義已棄用,並可能在未來版本的 CMake 中移除。