Xcodebuild无法从项目文件中获取环境值?

时间:2011-12-29 20:39:18

标签: xcode xcodebuild

我正在使用Xcode 3.2.6,MacOSX。

我有一个全局可见的环境设置:

ICU_SRC=~/Documents/icu/source

确实是一个环境设置,它是在登录时设置的。当我打开终端时,就在那里。

在我的项目中,在Header Search Paths下我添加了这个:

$(ICU_SRC)/i18n
$(ICU_SRC)/common

当我在IDE中编译时,这些扩展正确。当我查看构建结果时,我看到了:

-I/Users/eric.grunin/Documents/icu/source/i18n
-I/Users/eric.grunin/Documents/icu/source/common

但是,当我从命令行构建时,它会失败。我看到的是:

-I/i18n
-I/common

这是我用来编译的命令:

  

/ usr / bin / env -i xcodebuild -project my_project.xcodeproj -target   “my_program”-configuration发布-sdk macosx10.6 build

我做错了什么?

已编辑添加:

Apple解释Setting environment variables for user processes

5 个答案:

答案 0 :(得分:1)

如果您在<{strong> xcodebuild命令之前指定env vars ,有时效果会更好,如

# NOT this
xcodebuild ... options ... SOMEVAR=somevalue

# But this instead works better
SOMEVAR=somevalue xcodebuild ... options ...

在使用cocoapods时,这对PRODUCT_NAME特别有用。

答案 1 :(得分:1)

我知道这个问题已经有2年了,但仍然有用。我花了一天的时间来追踪xcodebuild查看CC环境变量(如果已设置)的事实,并且可能会做错事。我正在使用xcodebuild版本6.1.1(构建版本6A2008a)。

如果设置了CC,我得到的错误是:

PBXTargetBuildContext.mm:1690

详细信息:commandPath应为字符串,位为nil

提示:无

我希望这有助于其他人。

答案 2 :(得分:1)

您需要使用方案将xcode构建“连接”到Xcode。

从xcodebuild方面: xcodebuild ...选项... yourVAR = yourValue

从Xcode->产品->方案->编辑方案...->参数->环境变量 (名称)someKey(值)$ 您的VAR

关键是xcodebuild中的 yourVAR 的名称将通过使用'$'从Xcode参数中引用。

为了以后通过代码访问环境变量,您需要使用

ProcessInfo.processInfo.environment [“ someKey”]

Xcode Environment Variables from your Scheme

答案 3 :(得分:0)

根据我的实验,xcodebuild并没有从Shell中获取环境变量。要使xcode荣誉环境变量,我们必须明确地传递它们:

  export ICU_SRC_ENV=~/Documents/icu/source 
  /usr/bin/env -i xcodebuild -project my_project.xcodeproj \
                             -target "my_program" \
                             -configuration Release \
                             -sdk macosx10.6 \
                             build \
                             ICU_SRC=$ICU_SRC_ENV

上面的命令将系统环境变量传递给xcodebuild环境变量。您可以通过$(ICU_SRC)表示法在xcodeproj中引用它。顺便说一句,我使用了不同的名字,所以我们可以区分两个变量,但你也可以使用相同的变量名。

〜/ .MacOSX / environment.plist确实与我的示例中的导出行等效。这只适用于壳牌。

希望有所帮助。

答案 4 :(得分:-1)

使用Xcode设置的“环境”设置不是真正的环境变量;它们只为Xcode所知。如果您希望它们是真正的环境变量(从命令行可见),则必须使用以下shell命令:

user@host ~ $ export ICU_SRC="~/Documents/icu/source"