CMakeForceCompiler

3.6 版本已弃用: 请勿使用。

此模块提供的命令曾打算用于 CMake 无法自动检测编译器标识的交叉编译工具链文件。自此模块引入以来,CMake 的编译器标识功能得到了改进,现在可以识别任何编译器。此外,CMake 从编译器检测到的信息套件现已过于广泛,无法通过使用这些宏的工具链文件来提供。

此模块的一个常见用例是,在使用无法在没有特殊标志或自定义链接器脚本的情况下链接二进制文件的交叉编译器时,跳过 CMake 对可用编译器的检查。现在可以通过在工具链文件中设置 CMAKE_TRY_COMPILE_TARGET_TYPE 变量来支持此情况。

在 CMake 工具链文件中加载此模块

include(CMakeForceCompiler)

命令

本模块提供以下命令

cmake_force_c_compiler

CMAKE_C_COMPILER 变量设置为给定的编译器,并将 CMAKE_C_COMPILER_ID 变量设置为给定的编译器 ID。

cmake_force_c_compiler(<compiler> <compiler-id>)

此命令还会绕过对可用编译器和基本编译器信息进行的检查。

cmake_force_cxx_compiler

CMAKE_CXX_COMPILER 变量设置为给定的编译器,并将 CMAKE_CXX_COMPILER_ID 变量设置为给定的编译器 ID。

cmake_force_cxx_compiler(<compiler> <compiler-id>)

此命令还会绕过对可用编译器和基本编译器信息进行的检查。

cmake_force_fortran_compiler

CMAKE_Fortran_COMPILER 变量设置为给定的编译器,并将 CMAKE_Fortran_COMPILER_ID 变量设置为给定的编译器 ID。

cmake_force_fortran_compiler(<compiler> <compiler-id>)

此命令还会绕过对可用编译器和基本编译器信息进行的检查。

示例

使用此模块的简单工具链文件可能如下所示:

cmake/toolchains/example-toolchain.cmake
include(CMakeForceCompiler)
set(CMAKE_SYSTEM_NAME Generic)
cmake_force_c_compiler(chc12 MetrowerksHicross)
cmake_force_cxx_compiler(chc12 MetrowerksHicross)

在新 CMake 代码中,在设置所需变量时会自动检测编译器。

cmake/toolchains/example-toolchain.cmake
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER chc12)
set(CMAKE_CXX_COMPILER chc12)

另请参阅