CMakeForceCompiler

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

此模块提供的宏曾用于交叉编译工具链文件,当时 CMake 无法自动检测编译器标识。自本模块推出以来,CMake 的编译器识别能力已得到改进,现在可以教会它识别任何编译器。此外,CMake 从编译器检测到的信息量已非常庞大,无法通过使用这些宏的工具链文件提供。

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


CMAKE_FORCE_C_COMPILER 具有以下签名

CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>)

它将 CMAKE_C_COMPILER 设置为给定的编译器,并将 cmake 内部变量 CMAKE_C_COMPILER_ID 设置为给定的编译器 ID。它还会绕过对工作编译器和基本编译器信息测试的检查。

CMAKE_FORCE_CXX_COMPILER 具有以下签名

CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>)

它将 CMAKE_CXX_COMPILER 设置为给定的编译器,并将 cmake 内部变量 CMAKE_CXX_COMPILER_ID 设置为给定的编译器 ID。它还会绕过对工作编译器和基本编译器信息测试的检查。

CMAKE_FORCE_Fortran_COMPILER 具有以下签名

CMAKE_FORCE_Fortran_COMPILER(<compiler> <compiler-id>)

它将 CMAKE_Fortran_COMPILER 设置为给定的编译器,并将 cmake 内部变量 CMAKE_Fortran_COMPILER_ID 设置为给定的编译器 ID。它还会绕过对工作编译器和基本编译器信息测试的检查。

因此,一个简单的工具链文件可能如下所示

include (CMakeForceCompiler)
set(CMAKE_SYSTEM_NAME Generic)
CMAKE_FORCE_C_COMPILER   (chc12 MetrowerksHicross)
CMAKE_FORCE_CXX_COMPILER (chc12 MetrowerksHicross)