【发布时间】:2015-10-20 11:53:00
【问题描述】:
我使用以下脚本在 OSX Yosemite 10.10.5 上运行 XCode (7.0.1 7A1001):
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 Search Paths 字段中。
- 在 App1 中,它按预期解析为
/Users/ohads/bar。 - 在 App2 中,它被解析为
/Users/ohads/- 注意HOME变量是如何被解析的,但FOO变量不是。
这里发生了什么?为什么会出现差异?我怎样才能让FOO 在 App2 中工作 - 是否有一些我缺少的特殊标志或声明?
顺便说一句,好像这还不够奇怪,即使我只使用 export,App1 也能正常工作(与应该用于 GUI 应用程序的 launchctl 相反,因为 export 应该只影响现金应用程序) .
【问题讨论】:
-
嗨!您使用的是什么版本的 OSX?
-
@Arseniy 添加到问题
-
您确定没有在 App2 设置中的某处定义
FOO吗? -
launchctl setenv应该可以工作,但是我不明白为什么您不能使用相对于 Xcode 项目的路径,而只是确保 Xcode 项目位于正确的位置?以这种方式使用环境变量,实际上会使您的过程更加困难。 -
export应该足够了,因为open -a xcode从bash会话中打开 GUI 应用程序。从 Finder 打开的 GUI 应用程序(不是从bash会话启动的)是需要launchctl的应用程序。 (除非open不分叉/执行该进程,而是向操作系统发送消息以打开应用程序,在这种情况下,此注释无关紧要。)
标签: xcode bash environment-variables xcconfig