XCode 不识别环境变量
XCode doesn't recognize environment variables
我使用以下脚本 运行 XCode (7.0.1 7A1001) on OSX Yosemite 10.10.5:
export FOO=bar #this should not be necessary, but just in case
launchctl setenv FOO bar #should make it visible to all GUI applications (=XCode)
open -a xcode
然后我打开一个包含两个项目的工作区:App1 和 App2。在这两个项目中,我都将 $(HOME)/$(FOO)
放在 Header 搜索路径 字段中。
- 在 App1 中,它按预期解析为
/Users/ohads/bar
。
- 在 App2 中解析为
/Users/ohads/
- 请注意 HOME
变量是如何解析的,但 FOO
变量不是。
这是怎么回事?为什么会出现差异?如何使 FOO
在 App2 中工作 - 是否缺少某些特殊标志或声明?
顺便说一句,好像这还不够奇怪,即使我只使用 export
App1 也能正常工作(与 launchctl
相反,后者应该用于 GUI 应用程序,见 export
应该只影响现金申请)。
看起来这与 new XCode 7 behavior 有关。为了 XCode 使用环境变量,必须发出以下命令:
$ defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
发出此命令后,export
和 launchctl
都起作用(根据 chepner 的评论)。我只能猜测它在 App1 中工作,因为它是在较旧的 XCode 版本中创建的。
我使用以下脚本 运行 XCode (7.0.1 7A1001) on OSX Yosemite 10.10.5:
export FOO=bar #this should not be necessary, but just in case
launchctl setenv FOO bar #should make it visible to all GUI applications (=XCode)
open -a xcode
然后我打开一个包含两个项目的工作区:App1 和 App2。在这两个项目中,我都将 $(HOME)/$(FOO)
放在 Header 搜索路径 字段中。
- 在 App1 中,它按预期解析为
/Users/ohads/bar
。 - 在 App2 中解析为
/Users/ohads/
- 请注意HOME
变量是如何解析的,但FOO
变量不是。
这是怎么回事?为什么会出现差异?如何使 FOO
在 App2 中工作 - 是否缺少某些特殊标志或声明?
顺便说一句,好像这还不够奇怪,即使我只使用 export
App1 也能正常工作(与 launchctl
相反,后者应该用于 GUI 应用程序,见 export
应该只影响现金申请)。
看起来这与 new XCode 7 behavior 有关。为了 XCode 使用环境变量,必须发出以下命令:
$ defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
发出此命令后,export
和 launchctl
都起作用(根据 chepner 的评论)。我只能猜测它在 App1 中工作,因为它是在较旧的 XCode 版本中创建的。