CMP0119¶
在 3.20 版本加入.
LANGUAGE 源文件属性明确编译为指定语言。
LANGUAGE 源文件属性被记录为意味着源文件是用指定语言编写的。在 CMake 3.19 及以下版本中,设置此属性会导致 CMake 使用指定语言的编译器编译源文件。但是,它只传递一个显式标志,告诉编译器将源代码视为“CXX”语言的 MSVC 类、XL 和 Embarcadero 编译器的指定语言。 CMake 3.20 及更高版本更喜欢在所有已知此类标志的编译器上使用诸如“-x c”之类的标志明确告诉编译器使用指定的语言。
此策略为尚未更新以期望此行为的项目提供兼容性。例如,一些项目在汇编语言“.S”源文件上将“LANGUAGE”属性设置为“C”,以便使用 C 编译器编译它们。此类项目应更新为使用 enable_language(ASM),为此 CMake 通常会选择 C 编译器作为相关平台上的汇编器。
此策略的“旧”行为是使用其未记录的含义解释“LANGUAGE <LANG>”属性以“使用”<LANG>“编译器”。此策略的“新”行为是使用其文档含义解释“LANGUAGE <LANG>”属性以“编译为”<LANG>“源”。
此策略是在 CMake 版本 3.20 中引入的。使用 cmake_policy() 命令将其显式设置为 OLD 或 NEW。与许多政策不同,CMake 版本 |release|当此策略未设置且仅使用“旧”行为时*不*发出警告。
备注
策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。