Подтвердить что ты не робот

Работа с CMake и Xcode: сохранить изменения проекта при изменении CMakeLists.txt

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

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

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

Проблема

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

Я думаю, вы потеряете это. 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 будет только уничтожать Make файлы. Это может быть способом, чтобы все были счастливы.

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

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

Edit:

У ваших разработчиков Xcode есть ограниченная возможность использовать "Пользовательские настройки". Я не знаю, как их использовать (я парень emacs/make-sort), но, возможно, они могут использовать их для переопределения настроек CMake.