Насколько я могу судить, есть два пути. Наиболее вероятно, что вы почти у цели, это использовать CMAKE_OSX_SYSROOT
для установки XCode SDKROOT. Существует также переменная CMAKE_OSX_ARCHITECTURES
, которая отображается в ARCHS в XCode.
Альтернатива - использовать Поддержка кросс-компиляции CMake . Я не использовал его для iphone, но я сделал это для других процессоров ARM. Вам нужно настроить файл набора инструментов, который будет выглядеть примерно так:
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR arm-elf)
set(CMAKE_C_COMPILER /path/to/complier/bin/arm-elf-gcc)
set(CMAKE_FIND_ROOT_PATH /path/to/compiler)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
И затем, когда вы запустите cmake, задайте для переменной CMAKE_TOOLCHAIN_FILE
имя вашего файла набора инструментов. Или, если вы компилируете только одну архитектуру, вы можете жестко закодировать значение в файле CMakeLists.txt. Но я предполагаю, что вам нужно будет кросс-компиляцию для симулятора iphone и для самого iphone, верно? Таким образом, вы могли бы запустить один из них, возможно, имея несколько вариантов сборки:
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-sim.cmake .
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-real.cmake .
Где файлы sim / real определяют среду для инструментов симулятора или реального компилятора iphone.
Некоторые другие ссылки, которые могут помочь: это сообщение об ошибке и это обсуждение списка рассылки .