CMP0119

在版本 3.20 中新增。

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

LANGUAGE 原始檔屬性其文件說明此原始檔是以指定的語言撰寫。在 CMake 3.19 及更早版本中,設定此屬性會導致 CMake 使用指定語言的編譯器來編譯原始檔。然而,它只傳遞一個明確的標誌,告知編譯器將原始碼視為指定的語言,適用於類似 MSVC、XL 和 Embarcadero 編譯器的 CXX 語言。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 版本中移除。