Eclipse Lunaでmingw-get版(32ビット)の他に、msys2+mingw64を使い始めたので、それらを切り替え可能にする。(201411)

Eclipseがツールチェインを探す方法

Eclipseは、以下の優先順位(多分)で、使用するツールチェインやmsysのbin(rmコマンドなど)を探す。

  1. 環境変数 MINGW_HOMEMSYS_HOMEが設定されていたら、それを使用。

    • MinGW (mingw-get)の場合

      MINGW_HOME=C:\MinGW,MSYS_HOME=C:\MinGW\msys\1.0

    • MSYS2 + mingw64(pacman) の場合

      MINGW_HOME=S:\msys64\mingw64,MSYS_HOME=S:\msys64\usr

      MSYS2では、バイナリは /usr/bin に配置されているので、MSYS_HOME=S:\msys64では駄目。

  2. MinGWやmsysのbinが環境変数PATHに含まれていれば、それを使用。

  3. ‘標準の’フォルダ C:\MinGW があればそれを使用。

  4. あきらめる

従って例えば、環境変数 MINGW_HOMEMSYS_HOMEをコントロールすれば、MinGW(とMSYS)を切り替えてビルドできる。

Run/Debug時のライブラリへのPATH

Run/Debug時の環境において、必要なDLLへのPATHが通っていなければならない。これは上記ビルド用の環境とはであり、Eclipse起動時の環境変数PATHか、あるいは各Run/Debug Configurationに変数PATHを追加して設定する必要がある。

設定・切り替え方法の検討

  • Eclipse起動のwindowsショートカットでこれらを設定するのが良さそう。mingw/binにあるDLL用のPATH追加も一緒におこなえば良い。

  • 次の2つは、切り替えが面倒なので却下。

    • Eclipse の preference で設定した場合、これを書き換えないといけない。さらに、Run/Debug configurationにPATH=${MINGW_HOME}/binとしたくても、変数を参照できない(ビルドと実行の環境変数は別のセットらしい)。

    • Windowsユーザープロファイルへの設定は、チェックも設定作業も面倒。

coolなショートカットの例

コマンドプロンプトのウィンドウが開かないように、cygwinに付属の run.exe を介してeclipseを起動する。MSYS_HOME, MINGW_HOME, PATH を設定してから。

c:\cygwin64\bin\run.exe cmd /C "SET MINGW_HOME=S:\msys64\mingw64& SET MSYS_HOME=S:\msys64\usr& SET PATH=C:\MinGW\bin;%PATH%& C:\...\eclipse.exe"

SET コマンドと直後の&の間には、空白を置かない。さもないと、セットする値の最後に空白が追加される。

cmd.exeの環境変数の遅延展開を使うと、少しだけ楽できて

c:\cygwin64\bin\run.exe cmd /V:on /C "SET MINGW_HOME=S:\msys64\mingw64& SET MSYS_HOME=S:\msys64\usr& SET PATH=!MINGW_HOME!\bin;%PATH%& C:\...\eclipse.exe"