如何在Ruby脚本文件中获取Xcode项目根目录路径?
获取Xcode项目根目录的Ruby实现方法
方法一:基于脚本自身路径推导
Ruby里的__dir__会返回当前脚本文件所在的绝对路径。如果你的脚本直接放在项目根目录下,一行就能拿到根目录:
project_root = __dir__
要是脚本在根目录的子文件夹里(比如${SRCROOT}/Scripts/),就通过File.expand_path向上回退对应层级:
# 假设脚本在根目录下的Scripts文件夹里,回退一级到根目录 script_dir = __dir__ project_root = File.expand_path("..", script_dir)
层级多的话就多写几个..,比如"../.."对应回退两级。
方法二:直接传递Xcode的SRCROOT(最稳妥)
既然你在构建命令里已经用到了${SRCROOT},直接把它传给脚本更靠谱,不用自己推导:
方式1:作为命令行参数传
把Xcode里的构建命令改成:
ruby ${SRCROOT}/Path/ruby_script_file_name.rb ${SRCROOT}
然后在脚本里读取第一个参数:
project_root = ARGV[0]
方式2:通过环境变量传
修改构建命令为:
PROJECT_ROOT=${SRCROOT} ruby ${SRCROOT}/Path/ruby_script_file_name.rb
脚本里直接读环境变量:
project_root = ENV['PROJECT_ROOT']
方法三:查找Xcode项目文件定位
如果脚本位置不固定,还可以通过找.xcodeproj文件来自动定位根目录:
current_dir = __dir__ project_root = current_dir # 向上遍历目录,直到找到包含.xcodeproj的文件夹 until Dir.glob(File.join(project_root, "*.xcodeproj")).any? parent_dir = File.expand_path("..", project_root) # 到系统根目录还没找到就停止 break if parent_dir == project_root project_root = parent_dir end
内容的提问来源于stack exchange,提问作者Shohin
相关产品推荐
相关产品推荐

