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