I use the following script to run 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
I then open a workspace with two projects: App1 and App2. In both projects I put $(HOME)/$(FOO)
in the Header Search Paths field.
- In App1 it is resolved to
/Users/ohads/bar
as expected. - In App2 it is resolved to
/Users/ohads/
- note how theHOME
variable is resolved, but theFOO
variable is not.
What's going on here? Why the discrepancy? How can I make FOO
work in App2 - is there some special flag or declaration I'm missing?
BTW, as if that's not weird enough, App1 works even when I only use export
(as opposed to launchctl
which is what one should use for GUI applications, seeing as export
should only affect cash applications).
FOO
defined somewhere in the App2 settings ? – Captionlaunchctl setenv
should work, however I don't see why you cannot use paths relative to the Xcode project and just ensure the Xcode project is in the right place? Using an environment variable in this way, actually makes your process harder. – Inertialaunchctl
should have worked, so what am I missing? – Robledoexport
should be sufficient, sinceopen -a xcode
opens the GUI app from within abash
session. GUI apps that are opened from the Finder, which is not started from abash
session, are the ones who needlaunchctl
. (Unlessopen
does not fork/exec the process, instead sending a message to the OS to open the app, in which case this comment is irrelevant.) – Koralie