Intended to indicate whether CMake is cross compiling, but note limitations discussed below.
This variable will be set to true by CMake if the CMAKE_SYSTEM_NAME
variable has been set manually (i.e. in a toolchain file or as a cache entry from the cmake
command line). In most cases, manually setting CMAKE_SYSTEM_NAME
will only be done when cross compiling, since it will otherwise be given the same value as CMAKE_HOST_SYSTEM_NAME
if not manually set, which is correct for the non-cross-compiling case. In the event that CMAKE_SYSTEM_NAME
is manually set to the same value as CMAKE_HOST_SYSTEM_NAME
, then CMAKE_CROSSCOMPILING
will still be set to true.
Another case to be aware of is that builds targeting Apple platforms other than macOS are handled differently to other cross compiling scenarios. Rather than relying on CMAKE_SYSTEM_NAME
to select the target platform, Apple device builds use CMAKE_OSX_SYSROOT
to select the appropriate SDK, which indirectly determines the target platform. Furthermore, when using the Xcode
generator, developers can switch between device and simulator builds at build time rather than having a single choice at configure time, so the concept of whether the build is cross compiling or not is more complex. Therefore, the use of CMAKE_CROSSCOMPILING
is not recommended for projects targeting Apple devices.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/variable/CMAKE_CROSSCOMPILING.html