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)