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