XCode をサイド バイ サイドでインストールし、DEVELOPER_DIR 環境変数を使用してそれらを選択したいと考えています。
2 つ以上のバージョンの Xcode がインストールされていてもかまいません。それらの間で選択する通常の方法はコマンドを使用することですxcode-select
が、そのコマンドのマニュアルページには、DEVELOPER_DIR
環境変数を自分で設定することにより、現在のセッションだけで同じことを達成できると書かれているようです. --switch
オプションのドキュメントには次のように記載されています。
アクティブな開発者ディレクトリを指定されたパス (/Applications/Xcode-DP.app など) に設定します。このコマンドは、スーパーユーザー権限 (sudo(8) を参照) で実行する必要があり、システム上のすべてのユーザーに影響します。スーパーユーザー権限なしで、または現在のシェル セッションのみにパスを設定するには、代わりに DEVELOPER_DIR 環境変数を使用します (ENVIRONMENT を参照)。
ただし、環境セクションに記載されているアドバイスにも注意する必要があります。
歴史的な理由から、開発者ディレクトリは Xcode アプリケーション内の開発者コンテンツ ディレクトリと見なされることに注意してください (たとえば、/Applications/Xcode.app/Contents/Developer)。環境変数は、実際の Developer コンテンツ ディレクトリまたは Xcode アプリケーション ディレクトリのいずれかに設定できます。コード選択で提供される shims は、環境変数を Developer コンテンツの完全なパスに自動的に変換します。
したがって、質問では、Xcode アプリケーションだけでなく、ディレクトリ<whatever>
へのフル パスを指定する必要があります。Developer
つまり、xcrun は明らかに DEVELOPER_DIR の値に依存していますが、ツール自体もそれに依存しているのでしょうか? 次の間に意味のある違いはありますか:
•DEVELOPER_DIR=<whatever> command CC=$(xcrun -f --sdk macosx clang)
を使用xcrun
してツールを見つけて自分で呼び出すことができ、いつ設定および設定解除するかを心配するのDEVELOPER_DIR
は非常に複雑に思えます。ドキュメントによるxcode-select
と、すべての「シム」はDEVELOPER_DIR
設定を尊重します。ここでの「シム」は、 の Xcode コマンドを指します/usr/bin
。xcrun
その環境変数が正しく設定されている限り、検出/usr/bin/clang
されたものの代わりに「/usr/bin/clang」を呼び出すだけで、 のclang
バージョンを呼び出すことができますDEVELOPER_DIR
。おそらく、ある種のビルド スクリプトを作成しているためにこの質問をしているのでDEVELOPER_DIR
、そのスクリプトの早い段階で設定してから/usr/bin
コマンドを使用するだけで問題はないはずです。
•command CC=$(DEVELOPER_DIR=<whatever> xcrun -f --sdk macosx clang)
プログラムは、親プロセスから環境を継承します。ここではclang
、使用する の適切なコピーを見つけていますが、設定されていない環境でそれを呼び出しますDEVELOPER_DIR
。これが重要かどうかは、使用しているツールが他のツールを呼び出すかどうかによって異なります。正直なところ、ツールのいずれかが他のツールを呼び出すかどうかはわかりませんが、そのようなツールがそれらのツールの多くを呼び出すことは論理的であるため、正しく設定されているxcodebuild
ことに依存しているようです。DEVELOPER_DIR
要するに、DEVELOPER_DIR
ビルド スクリプトで必要に応じて設定することのマイナス面はなく、呼び出しでのみ指定しようとすることはxcrun
、一般的に代替アプローチよりも信頼性が低いようです。