4

次のスクリプトを使用して、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

次に、 App1App2の 2 つのプロジェクトを含むワークスペースを開きます。両方のプロジェクト$(HOME)/$(FOO)で、Header Search Pathsフィールドに入力しました。

  • App1では、期待どおりに解決され/Users/ohads/barています。
  • App2では、変数がどのように解決される/Users/ohads/かに注意してください。ただし、HOME変数は解決されFOOません。

何が起きてる?なぜ不一致なのですか?どうすればFOOApp2 で動作させることができますか? 不足している特別なフラグや宣言はありますか?

ところで、それが十分に奇妙ではないかのように、App1 は私が使用するだけの場合でも機能します( GUI アプリケーションに使用する必要があるのとはexport対照的に、現金アプリケーションにのみ影響するはずです)。launchctlexport

4

1 に答える 1

12

これは、新しい XCode 7 の動作に関係しているようです。XCode で環境変数を使用するには、次のコマンドを発行する必要があります。

$ defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO

このコマンドが発行されると、両方が機能exportlaunchctlます(chepnerのコメントによる)。古いXCodeバージョンで作成されたため、 App1で機能していたとしか思えません。

于 2015-10-20T13:08:35.617 に答える