我需要在xcode 4中运行自定义构建脚本。该脚本已作为预操作添加并正确执行。我的问题是,没有可用的environment variables可以帮助我访问项目文件。
即我对${PROJECT_DIR}
,${BUILT_PRODUCTS_DIR}
和${INFOPLIST_PATH}
感兴趣。不幸的是没有设置变量。整个环境看起来像这样:
Apple_PubSub_Socket_Render=/tmp/launch-pc2V6P/Render
BASH=/bin/sh
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/Users/melle/Projects/rc-control/RC/Scripts/preBuild.sh")
BASH_VERSINFO=([0]="3" [1]="2" [2]="48" [3]="1" [4]="release" [5]="x86_64-apple-darwin10.0")
BASH_VERSION='3.2.48(1)-release'
COMMAND_MODE=unix2003
DIRSTACK=()
DISPLAY=/tmp/launch-VH6onm/org.x:0
EUID=502
GROUPS=()
HOME=/Users/melle
HOSTNAME=zack.fritz.box
HOSTTYPE=x86_64
IFS=' '
LOGNAME=melle
MACHTYPE=x86_64-apple-darwin10.0
OPTERR=1
OPTIND=1
OSTYPE=darwin10.0
PATH=/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin
PIPESTATUS=([0]="0")
POSIXLY_CORRECT=y
PPID=43073
PS4='+ '
PWD=/private/var/folders/h2/h2tdJ2dPF943jRjJXqjNX++++TM/-Tmp-
SCHEME_ACTION_NAME='Run Script'
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=3
SSH_AUTH_SOCK=/tmp/launch-LXX6Lp/Listeners
TERM=dumb
TMPDIR=/var/folders/h2/h2tdJ2dPF943jRjJXqjNX++++TM/-Tmp-/
UID=502
USER=melle
_=PWD
__CF_USER_TEXT_ENCODING=0x1F6:0:0
这是xcode4中的bug还是我,完全错误吗?
我当前的解决方法是滥用${BASH_SOURCE}
来找到回到我的项目目录的方式...
更新:看起来像this is a bug in xcode 4.0.1。如果直接在Xcode窗口中输入脚本,则至少有变量${WORKSPACE_PATH}
可用。
我发现在我的情况下,将脚本添加到目标的构建阶段而不是作为预操作是一个更好的解决方案:
${PROJECT_DIR}
。您甚至可以在Log Navigator中为您输出所有环境变量。
此外,您调用的任何脚本的工作目录都将自动设置为项目目录。