Как сохранить файл XCode 4 pbxproj в синхронизации в проекте, управляемом CMake? - PullRequest
1 голос
/ 29 февраля 2012

У нас есть проект C ++, который построен с использованием CMake (2.8.7) и имеет версию с Git. Двое из наших разработчиков (DevA и DevB) используют XCode 4.2. Они могут сгенерировать проект XCode, используя функцию CMake -G Xcode, без проблем, а также push / pull / commit изменения через IDE. Проблема начинается, когда проект реструктурируется. Если DevA добавляет несколько файлов и фиксирует / нажимает, DevB может извлечь изменения (они видны в файловой системе), но они не будут отражены в настройке проекта XCode. Мы подумали, что, возможно, это поможет решить проблему с файлом * .pbxproj; однако файл полон абсолютных путей. До сих пор единственное «решение», которое мы могли найти, было заново создать проект XCode, запуская CMake -G Xcode каждый раз, когда дерево исходного кода реорганизуется, что очень утомительно. Есть ли более простой способ? Спасибо.

1 Ответ

5 голосов
/ 12 марта 2012

CMake зарегистрировал цель ZERO_CHECK в качестве зависимости для каждой "реальной" цели в XCode, его единственная ответственность - перезапустить CMake в "CMakeScripts / ReRunCMake.make" и обновить артефакты XCode, если один из файлов CMakeLists.txt был изменен. , Если вы не видите изменений, отраженных в Xcode, то это потому, что Xcode не будет следить за изменениями в своем каталоге .xcodeproj. Прагматичное решение - закрыть проект в Xcode и снова открыть его. В этот момент вы можете в любом случае повторно запустить «cmake -G Xcode ..».

То же самое относится и к Visual Studio 10, за исключением того, что он спросит вас о каждой цели, хотите ли вы ее перезагрузить. Он отлично работает для небольших изменений, но не для добавления / удаления файлов.

Я могу с этим смириться, поскольку в жизни проектов есть момент, когда набор исходных файлов больше не меняется. По крайней мере, это мой опыт.

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