CMP0119

添加到 3.20 版本中。

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

LANGUAGE 源文件属性已记录,表示源文件使用指定语言编写。在 CMake 3.19 及更低版本中,设置此属性会使 CMake 使用指定语言的编译器编译源文件。但是,它仅传递显式标志来告诉编译器将源视为 MSVC 类似语言、XL 和 Embarcadero 编译器的指定语言,用于 CXX 语言。CMake 3.20 及更高版本更愿意明确告诉编译器使用指定语言,使用一个标志,如 -x c,用于所有已知此标志的编译器。

此策略为尚未更新为预期此行为的项目提供兼容性。例如,某些项目正在将 LANGUAGE 属性设置为 C,针对汇编语言 .S 源文件,以便使用 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 中移除。