CMP0119

在版本 3.20 中添加。

LANGUAGE 源文件属性显式地编译为指定的语言。

LANGUAGE 源文件属性的文档含义是源文件以指定的语言编写。在 CMake 3.19 及更低版本中,设置此属性会导致 CMake 使用指定语言的编译器编译源文件。然而,对于 CXX 语言的 MSVC-like、XL 和 Embarcadero 编译器,它仅传递一个显式标志来告知编译器将源文件视为指定的语言。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 版本中移除。