Работа с CMake и Xcode: сохранить изменения проекта при изменении CMakeLists.txt - PullRequest
30 голосов
/ 16 июля 2010

Прежде всего, я никогда не разрабатывал с Xcode. У меня есть проект, который был разработан мной в определенной среде (Linux и emacs), и теперь некоторые коллеги, которые используют другую среду, будут работать со мной. Это проект C ++, который использует CMake.

Короче говоря:

  • Я использую Linux / Emacs. Другие разработчики используют mac / Xcode.
  • Я использую генератор GNU Makefiles. Они используют генератор Xcode.
  • Казалось, все работает нормально.

Проблема

Разработчики Xcode будут использовать исполняемый файл, который отображается под списком Исполняемые файлы в окне Group & Files Xcode. Они настроят его, дважды щелкнув и добавив свои настройки (настройка отладочных каталогов, установка переменных среды, но , что более важно , установка аргументов исполняемого файла).

Когда разработчик (я) изменяет CMakeLists.txt (а именно, чтобы добавить новый исходный файл), разработчики XCode вынуждены повторно генерировать свой проект, и они теряют всю конфигурацию, упомянутую выше.

Вопрос: Есть ли способ избежать этого?

Если бы каждый разработчик Xcode постоянно терял эту конфигурацию, я, конечно, был бы единственным, кто использовал CMake. (

Спасибо за вашу помощь!

Ответы [ 2 ]

11 голосов
/ 20 июля 2010

Я думаю, вы потеряете этот. Xcode хранит все определения проекта в файле с именем Foo.xcodeproj / project.pbxproj. Когда один из разработчиков Mac меняет флаг или настройку, он записывается в файл project.pbxproj. Когда вы изменяете файл CMakeLists.txt, CMake запускает перестройку project.pbxproj, стирая все изменения разработчика Mac. XCode не был разработан с учетом CMake, и они оба работают очень хорошо вместе.

Одним из возможных решений (которое не является лучшим для разработчиков Mac) является использование CMake для генерации make-файлов. Им потребуется написать несколько пользовательских команд в XCode, которые вызывают CMake / Make для сборки исполняемых файлов, но они смогут передавать аргументы в CMake для управления процессом сборки. Исполняемые файлы будут определены отдельно для XCode, а CMake будет уничтожать только файлы Makefile. Это может быть способ сделать всех счастливыми.

Люди из CMake не уделяют Xcode того внимания, которого оно заслуживает, ИМХО. Но это ограничение присуще архитектуре Xcode и будет крепким орешком.

Надеюсь, это поможет,
-дан

Edit:

Ваши разработчики XCode имеют некоторые ограниченные возможности для использования «пользовательских настроек». Я не знаю, как их использовать (я парень из emacs / make), но, возможно, они могли бы использовать их для переопределения настроек CMake.

10 голосов
/ 19 июля 2010

Вы можете добавить цель, которая запускает программу, на add_custom_target(foobar COMMAND foo --bar DEPENDS foo).Вы также можете вызвать скрипт вместо программы, где легко установить переменные среды (я использую эту настройку под Win32 для настройки путей в VC).Этот сценарий также может быть шаблоном в VCS, поэтому у каждого разработчика есть собственная версия сценария с фактическими параметрами командной строки.

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