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 設定為給定的 compiler-id。它還會繞過對工作編譯器的檢查和基本編譯器資訊測試。

巨集 CMAKE_FORCE_CXX_COMPILER 具有以下簽章

CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>)

它將 CMAKE_CXX_COMPILER 設定為給定的編譯器,並將 cmake 內部變數 CMAKE_CXX_COMPILER_ID 設定為給定的 compiler-id。它還會繞過對工作編譯器的檢查和基本編譯器資訊測試。

巨集 CMAKE_FORCE_Fortran_COMPILER 具有以下簽章

CMAKE_FORCE_Fortran_COMPILER(<compiler> <compiler-id>)

它將 CMAKE_Fortran_COMPILER 設定為給定的編譯器,並將 cmake 內部變數 CMAKE_Fortran_COMPILER_ID 設定為給定的 compiler-id。它還會繞過對工作編譯器的檢查和基本編譯器資訊測試。

因此,一個簡單的工具鏈檔案可能看起來像這樣

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