

macOSでcommand line toolsを切り替えるにはどうすればいいのでしょうか?

私の環境には2つのcommand line toolsがインストールされています。

下記、1と2を切り替えながら使いたいのです。  
XCodeのPreferencesのlocationsのCommand line
toolsのところを見ても、XCodeに付属してきたものだけが表示されており、切り替えられません。

  1. Xcode に付属してきたもの   
(`/Applications/Xcode.app/Contents/Developer`に存在している)

  2. Apple の DeveloperサイトからCommand line toolsだけをダウンロードし、インストールしたもの (Command line tools beta1 for XCode 10)  
(`/Library/Developer`にインストールされている)


CC BY-SA 4.0
2018-06-05T10:24:16.103
44535
2018-06-06T04:41:33.297
5246
question
xcode macos
macOSでcommand line toolsを切り替える


一般的にはこういう場合は仮想マシンを使ったりパーティションでアクティブなツールを切り替えたりする方が間違いがなくて良いと思うのですが、`command
line tools`を`Terminal`からのみ使うのでしたら、こういう方法で可能かも知れません。

まず、Terminalから実行するXcodeの`command line
tools`は`/Applications/Xcode.app/Contents/Developer`下にあるものが実行されているわけではありません。  
これは、Terminalから`which clang`または`wich
swiftc`してみると、`/usr/bin/`下の両コマンドが表示されることから確認出来ます。

Developer下には、更に`usr`フォルダ。更にその下に`bin`があり、ここに実行ファイルやライブラリーが置かれています。

なので、`$HOME`に、`.xcode10beta`というファイルを作り、そこで`PATH`の参照順番を変えて上げます。  
具体的には

[code]

    export PATH=/Library/Developer/usr/bin:$PATH
    export CC=/Library/Developer/usr/bin/clang
    export CXX=/Library/Developer/usr/bin/clang++
    export CFLAGS="-I/Library/Developer/usr/local/include -std=gnu99 -arch x86_64 -Os"
    export CXXFLAGS="-I/Library/Developer/usr/local/include -std=gnu++11 -arch x86_64 -Os"
    export LDFLAGS="-L/Library/Developer/usr/local/lib -Os -arch x86_64"
    
[/code]

の様な内容のファイルを作ります。  
このファイルはbash/zsh系用ですのでcsh系を使われている場合は適宜書き替えて下さい。

実行環境を切り替える場合は、コマンドラインから`source
~/.xcode10beta`とタイプして実行するとコマンドラインツールが切り替わると思います。

大事なのは１行目で、今までの実行ファイルのサーチパスの「前に」`/Library/Developer/usr/bin`を書くことで、同名の実行ファイルがあるときは、`/Library/Developer/usr/bin`にある実行ファイルを優先させることです。  
２行目以降は`clang` Cコンパイラへのオプションなので`swiftc`を使う時は`swiftc
--help`でswiftファイルをコンパイルする時の環境の設定の仕方を調べて適宜書き替えてお使い下さい。


CC BY-SA 4.0
2018-06-06T04:41:33.297
44555
2018-06-06T04:41:33.297
14745
44535
answer