Xcode4:自定义构建预操作/后操作中的空环境变量

时间:2011-04-08 20:19:44

标签: post build xcode4 action pre

我需要在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中的错误还是我,完全错了?

我目前的解决方法是滥用${BASH_SOURCE}找回返回项目目录的路径......

更新:看起来像this is a bug in xcode 4.0.1。如果您将脚本直接输入Xcode窗口,则至少可以使用变量${WORKSPACE_PATH}

1 个答案:

答案 0 :(得分:1)

我发现在我的情况下,将脚本添加到目标的构建阶段而不是作为预处理是一个更好的解决方案:

  1. 在项目导航器中选择项目。
  2. 选择目标。
  3. 转到Build Phases选项卡。
  4. 添加新的构建阶段(脚本)。
  5. 将其拖到编译源阶段上方。
  6. 添加您需要的任何脚本。您可以访问环境变量,例如${PROJECT_DIR}
  7. 您甚至可以让它在日志导航器中输出所有环境变量。

    此外,您调用的任何脚本的工作目录将自动设置为项目的目录。