CMakeForceCompiler¶
Deprecated since version 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)