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