CMAKE_CROSSCOMPILING¶
CMake 設定此變數以指示是否正在進行交叉編譯,但請注意以下討論的限制。
如果已手動設定 CMAKE_SYSTEM_NAME
變數(例如在工具鏈檔案中,或作為來自 cmake
命令列的快取條目),CMake 會將此變數設定為 true。在大多數情況下,只有在交叉編譯時才會手動設定 CMAKE_SYSTEM_NAME
,因為如果不是手動設定,它將被賦予與 CMAKE_HOST_SYSTEM_NAME
相同的值,這對於非交叉編譯情況是正確的。如果 CMAKE_SYSTEM_NAME
被手動設定為與 CMAKE_HOST_SYSTEM_NAME
相同的值,則 CMAKE_CROSSCOMPILING
仍將設定為 true。
另一個需要注意的情況是,針對 macOS 以外的 Apple 平台建置的處理方式與其他交叉編譯情境不同。Apple 裝置建置不是依賴 CMAKE_SYSTEM_NAME
來選擇目標平台,而是使用 CMAKE_OSX_SYSROOT
來選擇適當的 SDK,這間接決定了目標平台。此外,當使用 Xcode
產生器時,開發人員可以在建置時切換裝置和模擬器建置,而不是在設定時做出單一選擇,因此建置是否為交叉編譯的概念更為複雜。因此,不建議針對 Apple 裝置的專案使用 CMAKE_CROSSCOMPILING
。