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)