Установить настройку сборки xcode с терминала?

Могу ли я изменить настройку в xcode, не открывая xcode? У меня есть автоматизированный процесс xcodebuild/xcrun, но мне нужно изменить 1 значение:

Цели > Выберите цель > Настройки сборки > Путь к правилам ресурсов подписи кода добавьте: $(SDKROOT)/ResourceRules.plist

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


person nizzle    schedule 27.11.2014    source источник


Ответы (3)


Что вы можете сделать, это запустить:

xcodebuild -target <target> -configuration <configuration> -showBuildSettings

Эта команда показывает все параметры, которые заполнены для target и переданы configuration. Найдите имя ключа, содержащего $(SDKROOT)/ResourceRules.plist (пусть назовем его THE_KEY), а затем попробуйте:

xcodebuild -target <target> -configuration <configuration> THE_KEY=<new_value>

Не гарантируйте, что это сработает.

person Opal    schedule 28.11.2014
comment
Мне тоже нужно точно такое же. Это работает? Не могли бы вы подтвердить. - person Rashmi Ranjan mallick; 07.01.2015
comment
Да. Определенно. Я не пробовал. Попробовав, обязательно проголосую. - person Rashmi Ranjan mallick; 07.01.2015
comment
Просто маленькое сомнение. Что я должен передать в качестве конфигурации? Это отладка или релиз? - person Rashmi Ranjan mallick; 07.01.2015
comment
Отладка или Выпуск в зависимости от того, какую конфигурацию вы хотите устранить. - person Opal; 07.01.2015
comment
Да. Это сработало. Я использую сценарий ANT для создания своего проекта Xcode. Мне удалось передать настройки сборки из сценария ANT. Спасибо - person Rashmi Ranjan mallick; 07.01.2015

Вы можете попробовать pbxproj. Это модуль Python, который помогает вам управлять проектами XCode с помощью командной строки.

Связанная с вашей проблемой часть может быть https://github.com/kronenthaler/mod-pbxproj/wiki/flags#add-code-sign

Вы можете pip install pbxproj получить его.

И вот пример, представленный в официальном репо:

from pbxproj import XcodeProject
# open the project
project = XcodeProject.load('myapp.xcodeproj/project.pbxproj')

# add a file to it, force=false to not add it if it's already in the project
project.add_file('MyClass.swift', force=False)

# set a Other Linker Flags
project.add_other_ldflags('-ObjC')

# save the project, otherwise your changes won't be picked up by Xcode
project.save()
person Hustlion    schedule 01.03.2017

Если вы используете CocoaPods, у вас уже установлен Xcodeproj в качестве зависимости: https://github.com/CocoaPods/Xcodeproj< /а>

Вот пример, который печатает изменения для каждой конфигурации сборки (Debug, Release,...):

#!/usr/bin/env ruby

require "xcodeproj"

project_path = File.join(File.dirname(__FILE__), 'MultiMarkdown', 'build-xcode', 'libMultiMarkdown.xcodeproj')
project = Xcodeproj::Project.open(project_path)
target = project.targets.select { |t| t.name == "libMultiMarkdown" }.first

new_build_dir = '$SYMROOT/$CONFIGURATION'
outdated_configs = target.build_configurations.select { |c| c.build_settings['CONFIGURATION_BUILD_DIR'] != new_build_dir }

if outdated_configs.empty?
  puts "All up-to-date"
  exit
end

outdated_configs.each do |config|
  old = config.build_settings['CONFIGURATION_BUILD_DIR']
  config.build_settings['CONFIGURATION_BUILD_DIR'] = new_build_dir
  puts "- [#{config.name}]:  Changed `CONFIGURATION_BUILD_DIR` from #{old} to #{new_build_dir}"
end

if project.dirty?
  puts "Saving changes ..."
  project.save
end

Вы можете заменить ключ на CODE_SIGN_RESOURCE_RULES_PATH и изменить его. Для всех целей:

new_path = "path/to/append"
target.build_configurations.each do |config|
  config.build_settings['CODE_SIGN_RESOURCE_RULES_PATH'] += new_path
end

Опять же, поскольку это поставляется с CocoaPods, если у вас есть зависимость, которая в этом нуждается, вы можете использовать почти тот же код в хуке CocoaPods.

person ctietze    schedule 02.07.2021