CMAKE_CROSSCOMPILING
Предполагается, что указывает, выполняется ли кросс-компиляция с помощью CMake, но обратите внимание на ограничения, описанные ниже.
Эта переменная будет установлена в значение true CMake, если переменная CMAKE_SYSTEM_NAME была установлена вручную (т.е. в файле цепочки инструментов или как запись кеша из команды 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–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/variable/CMAKE_CROSSCOMPILING.html