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 版本中删除。