从终端设置xcode“build setting”?

时间:2014-11-27 20:46:01

标签: xcode xcodebuild xcrun

无论如何我可以在不打开xcode的情况下更改xcode中的设置吗?我有一个自动xcodebuild / xcrun进程,但我需要更改1值:

目标>选择目标>构建设置>代码签名资源规则路径 添加: $(SDKROOT)/ResourceRules.plist

我找不到任何可以放这行的文件......

3 个答案:

答案 0 :(得分:10)

你可以做的是运行:

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

此命令显示为目标配置传递的所有设置。找到包含$(SDKROOT)/ResourceRules.plist的密钥的名称(让我们称之为 THE_KEY ),然后尝试:

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

不保证它会起作用。

答案 1 :(得分:2)

您可以尝试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()

答案 2 :(得分:0)

如果您使用 CocoaPods,则您已经将 Xcodeproj 作为依赖项安装:https://github.com/CocoaPods/Xcodeproj

这是一个打印每个构建配置(调试、发布、...)的更改的示例:

#!/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 钩子中使用几乎相同的代码。