You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:52:09