Xcode 8 Изменить конфигурацию через командную строку
Мне нужны две функциональные возможности, которые я не смог найти в поддержке. Первый - изменить имя конфигурации XCode с помощью скрипта bash. Для этого я постарался:
xcodebuild -target "target name" -configuration existingConfig CONFIGURATION=newConfigName
Команда выше выполняется успешно, но не меняет имя конфигурации. Это просто компилирует источник. Это, вероятно, следовало ожидать, хотя, поскольку я использую xcodebuild.
Для изменения имени конфигурации я также посмотрел файлы xcconfig. Например, я бы создал один в XCode с именем projectname-существующие ConfigName.xcconfig, и я бы добавил к нему новое имя конфигурации следующим образом:
CONFIGURATION = NewConfigName
Тем не менее, в приведенном выше примере я боюсь, что я неправильно использую файлы xcconfig. Есть ли хорошая ссылка на это где-нибудь?
Вторая часть функциональности, которую я не смог найти в поддержке, - это добавление новой конфигурации на лету через bash или xcconfig.
В конечном счете, я хотел бы сделать это, используя bash, но я также открыт для других мнений, которые не включают в себя открытие Xcode для этого. Здесь я использую подмодули git, извлекаю их и добавляю динамические конфигурации во время сборки CI, откуда и возникает эта проблема.
Возможно, есть более простой способ сделать это, но я подумал, что сначала задам свой вопрос, чтобы увидеть, нахожусь ли я на правильном пути.
1 ответ
Существует рубиновый камень под названием Xcodeproj
который также используется CocoaPods. Это в основном позволяет вам видеть файл проекта как объект, изменять и в конечном итоге сохранять его. Следующий код должен ответить на первую часть вашего вопроса о переименовании:
#!/usr/bin/ruby
require 'xcodeproj'
project_path = '../folder/yourproject.xcodeproj'
project = Xcodeproj::Project.open(project_path)
project.build_configurations.each do |configuration|
if configuration.name == "existingConfig"
configuration.name = "NewConfigName"
end
end
project.save()
Добавление новой конфигурации также должно быть возможно с Xcodeproj
, но это то, что я еще не сделал. Документация находится здесь:
https://github.com/CocoaPods/Xcodeproj http://www.rubydoc.info/gems/xcodeproj/Xcodeproj/Project