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

问题描述 投票:3回答:1

我需要在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}可用。

xcode post build xcode4 action
1个回答
1
投票

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

  1. 在项目导航器中选择项目。
  2. 选择目标。
  3. 转到“构建阶段”选项卡。
  4. 添加新的构建阶段(脚本)。
  5. 将其拖到编译源阶段上方。
  6. 在此添加您需要的任何脚本。您可以访问环境变量,例如${PROJECT_DIR}

您甚至可以在Log Navigator中为您输出所有环境变量。

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

© www.soinside.com 2019 - 2024. All rights reserved.