Как настроить CMake для сборки библиотеки для iPhone - PullRequest
9 голосов
/ 27 апреля 2009

Я пытаюсь использовать CMake для генерации конфигурации XCode для iPhone, вручную устанавливая определенные атрибуты. (Это даже правильный путь?) Мой файл CMake выглядит так:

project(MYLIB)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_CONFIGURATION_TYPES Debug Release Debug-iPhone)
set(FILES list of my files...)

add_library(mylib FILES)

set(XCODE_ATTRIBUTE_SDKROOT iphoneos2.2.1)
# more attributes later, I'm just trying to get one to work first

Прежде всего, это, похоже, не работает - в сгенерированном проекте XCode (у меня запущен cmake . -G Xcode), SDKROOT по-прежнему не установлен, и поэтому он говорит «Текущая Mac OS».

Во-вторых, предполагая, что это правильный способ сделать это, как мне установить атрибут только для конфигурации Debug-iPhone?

Ответы [ 2 ]

11 голосов
/ 30 апреля 2009

Насколько я могу судить, есть два пути. Наиболее вероятно, что вы почти у цели, это использовать 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.

Некоторые другие ссылки, которые могут помочь: это сообщение об ошибке и это обсуждение списка рассылки .

2 голосов
/ 21 марта 2012

Эта информация также может быть полезна:

Этот проект предоставляет простой файл инструментария iOS, который может использоваться с CMake для создания библиотек и установки приложений. Несколько примеров проектов включены.

http://code.google.com/p/ios-cmake/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...