我正在使用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
我做错了什么?
已编辑添加:
答案 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”]
答案 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"