CMAKE_CROSSCOMPILING
Предполагается, что указывает, выполняется ли кросс-компиляция CMake, но обратите внимание на ограничения, обсуждаемые ниже.
Эта переменная будет установлена в значение true CMake, если переменная CMAKE_SYSTEM_NAME была установлена вручную (т. е. в файле toolchain или в качестве записи в кэше из команды cmake). В большинстве случаев ручная установка CMAKE_SYSTEM_NAME выполняется только при кросс-компиляции, поскольку в противном случае ей присваивается то же значение, что и CMAKE_HOST_SYSTEM_NAME, если она не установлена вручную, что верно для случаев, когда кросс-компиляция не требуется. В случае если CMAKE_SYSTEM_NAME установлена вручную в том же значении, что и CMAKE_HOST_SYSTEM_NAME, тогда CMAKE_CROSSCOMPILING всё равно будет установлено в true.
Следует также учитывать, что сборка, нацеленная на платформы Apple, отличные от macOS, обрабатывается иначе, чем другие сценарии кросс-компиляции. Вместо того, чтобы полагаться на CMAKE_SYSTEM_NAME для выбора целевой платформы, сборка устройств Apple использует CMAKE_OSX_SYSROOT для выбора соответствующего SDK, что косвенно определяет целевую платформу. Кроме того, при использовании генератора Xcode разработчики могут переключаться между сборками устройства и симулятора во время сборки, а не иметь единственного выбора на этапе конфигурации, поэтому понятие о том, является ли сборка кросс-компиляцией или нет, более сложно. Поэтому использование CMAKE_CROSSCOMPILING не рекомендуется для проектов, нацеленных на устройства Apple.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.16/variable/CMAKE_CROSSCOMPILING.html