CMP0119

在 3.20 版本中添加。

LANGUAGE 源文件属性明确按指定的语言进行编译。

《CMake LANGUAGE 源文件属性》文档指出,该属性表示源文件是用指定的语言编写的。在 CMake 3.19 及更早版本中,设置此属性会导致 CMake 使用指定语言的编译器来编译源文件。但是,对于 MSVC 类、XL 和 Embarcadero 编译器,对于 CXX 语言,它只传递一个显式标志来告诉编译器将源文件视为指定的语言。CMake 3.20 及更高版本倾向于使用诸如 -x c 之类的标志,明确告诉编译器使用指定的语言,用于所有已知此类标志的编译器。

此策略提供与尚未更新以期望此行为的项目兼容性。例如,一些项目将 LANGUAGE 属性设置为汇编语言 .S 源文件的 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 版本中删除。