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)