Set xcode "build setting" from terminal? Set xcode "build setting" from terminal? xcode xcode

Set xcode "build setting" from terminal?


What You can do is to run:

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

This command shows all the settings that are filled for target and configuration passed. Find the name of the key that contains $(SDKROOT)/ResourceRules.plist (let call it THE_KEY) and then try:

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

Don't guarantee that it will work.


You could try pbxproj. This is a python module that helps you manipulate XCode projects with commandline.

The related part to your probelm may be https://github.com/kronenthaler/mod-pbxproj/wiki/flags#add-code-sign

You can pip install pbxproj to have it.

And here's an example provided in the official repo:

from pbxproj import XcodeProject# open the projectproject = XcodeProject.load('myapp.xcodeproj/project.pbxproj')# add a file to it, force=false to not add it if it's already in the projectproject.add_file('MyClass.swift', force=False)# set a Other Linker Flagsproject.add_other_ldflags('-ObjC')# save the project, otherwise your changes won't be picked up by Xcodeproject.save()


If you use CocoaPods, you already have Xcodeproj installed as a dependency: https://github.com/CocoaPods/Xcodeproj

Here's an example that prints the change for each build config (Debug, Release, ...):

#!/usr/bin/env rubyrequire "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" }.firstnew_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"  exitendoutdated_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}"endif project.dirty?  puts "Saving changes ..."  project.saveend

You can replace the key with CODE_SIGN_RESOURCE_RULES_PATH and modify that. For all targets:

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

Again, since this is shipped with CocoaPods, if you have a dependency that needs that, you can use almost the same code in a CocoaPods hook.