Windowsの上で,MinGW64 & MSYS を用いた開発をするための設定です.
Cygwin → MinGW64 → MinGW64 & MSYS と放浪を続けましたが,ようやく定位置を見つけたような気がします.MinGW64 は Windows API をターゲットとしたコンパイラで MSYS は MinGW64 と相性のよい作業環境という認識です.MinGW64 はコンパイラのみのような感じなのですが,MSYS を入れることで各種の開発用のツールが利用できるようになります.ぼくとしては bash と pkg-config が利用できることが魅力でした.Cygwin が利用できたらよかったのですが,MinGW64 と Cygwin は共存できないとの記述を読んだので,他のソリューションを探していました.
Windows の PATH 環境変数に $DROPBOX/win/bin を追加し,$HOME/.profile に以下の一行を追加すうことで設定が有効になります.
. "$DROPBOX"/win/bin/profile.sh
- Windowsキー+x+r msys
これでシェルが起動します.実際には msys.bat が起動されます.PATH に win/bin を追加するのは,このバッチファイルを起動するのが唯一の目的だったりします. - drop
Dropbox のディレクトリに移動するためのコマンド.Dropbox for Business の契約をして依頼,Dropbox フォルダの名前が Dropbox (smartnova) というシェルからは非常に入力しづらいパスになってしまいました.(かなり迷惑.Dropbox 社に不満を伝えました)この drop コマンドなしには生きていかれなくなりました. - cmake-project
CMake を用いて開発をしているプロジェクトのディレクトリでこのコマンドを実行することで,各種環境変数を設定します.ビルド作業は以下のとおりです.- cmake-project
- cmake
/tmp/… を作業ディレクトリとしているのでソースのあるディレクトリは汚しません. - make
- make install
デフォルトで /usr/local 以下にインストールします. - distclean
あと root と build というコマンドも定義されます.それぞれ,ソースとビルドのディレクトリに移動するためのコマンドです.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
if [ "$_system_type" = Darwin ]; then | |
export OSTYPE=Darwin | |
export C_INCLUDE_PATH=/opt/brew/include | |
export CPLUS_INCLUDE_PATH=/opt/brew/include | |
export CMAKE=/opt/brew/bin/cmake | |
export MAKE=/usr/bin/make | |
fi | |
if [ "$MSYSTYPE" = 1 ]; then | |
export PKG_CONFIG_PATH=/mingw/msys/local/lib/pkgconfig | |
export CPPFLAGS="-I/mingw/msys/local/include" | |
export CFLAGS="$CPPFLAGS -mms-bitfields -mthreads" | |
export CXXFLAGS="$CFLAGS" | |
export LDFLAGS="-L/mingw/msys/loadl/lib" | |
export CMAKE="C:\\Program Files (x86)\\CMake\\bin\\cmake" | |
export MAKE=/bin/make | |
fi | |
if [ "$MSYSTYPE" = 2 ]; then | |
export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig | |
# export CC=clang | |
# export CXX=clang++ | |
export CFLAGS="$CPPFLAGS -mms-bitfields -mthreads" | |
export CXXFLAGS="-std=c++11 $CFLAGS" | |
export CMAKE=/mingw64/bin/cmake | |
export MAKE=/mingw64/bin/mingw32-make | |
fi | |
if [ "$OSTYPE" = msys ]; then | |
export _PROJECT_ROOT_="$PWD" | |
else | |
export _PROJECT_ROOT_="`echo "$PWD" | sed -e 's/Dropbox (smartnova)/Dropbox/'`" | |
fi | |
_PROJECT_SUFFIX_=`echo "$PWD" | sed -e 's/.*Dropbox (smartnova)\///' -e 's/.*wakita\///'` | |
if [ "$MSYSTYPE" = 1 ]; then | |
export _PROJECT_BUILD_="/mingw/msys/tmp/$_PROJECT_SUFFIX_" | |
elif [ "$MSYSTYPE" = 2 ]; then | |
export _PROJECT_BUILD_="/tmp/$_PROJECT_SUFFIX_" | |
else | |
export _PROJECT_BUILD_="/tmp/$_PROJECT_SUFFIX_" | |
fi | |
mkdir -p "$_PROJECT_BUILD_" | |
PATH="$_PROJECT_BUILD_/bin:$_PROJECT_BUILD_:$PATH" | |
root() { cd "$_PROJECT_ROOT_"/$1; } | |
build() { cd "$_PROJECT_BUILD_"/$1; } | |
cmf() { if [ "$1" = "" ]; then build CMakeFiles; else build CMakeFiles/$1.dir; fi } | |
_cmake() { "$CMAKE" $*; } | |
cmake() { | |
if [ "$MSYSTYPE" = 1 ]; then | |
"$CMAKE" -DCMAKE_INSTALL_PREFIX:PATH=/mingw/msys/local $* -G"MSYS Makefiles" -H. -B"$_PROJECT_BUILD_" | |
elif [ "$MSYSTYPE" = 2 ]; then | |
"$CMAKE" -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DCMAKE_PREFIX_PATH=/mingw64/lib/cmake/glfw $* -G"MSYS Makefiles" -H. -B"$_PROJECT_BUILD_" | |
elif [ "$OSTYPE" = Darwin ]; then | |
/opt/brew/bin/cmake -DCMAKE_PREFIX_PATH=/opt/brew/lib/cmake/glfw $* -G"Unix Makefiles" -H"$_PROJECT_ROOT_" -B"$_PROJECT_BUILD_" | |
fi | |
} | |
make() { | |
$MAKE -C "$_PROJECT_BUILD_" $*; | |
} | |
vmake() { make VERBOSE=1 $*; } | |
debug() { | |
if [ -x "$_PROJECT_BUILD_/$1" ]; then gdb "$_PROJECT_BUILD_/$1" | |
elif [ -x "$_PROJECT_BUILD_/bin/$1" ]; then gdb "$_PROJECT_BUILD_/bin/$1" | |
fi | |
} | |
distclean() { rm -rf "$_PROJECT_BUILD_"; } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PATH="$DROPBOX"/win/bin:$DROPBOX/bin:$PATH | |
pf() { cd "${PROGRAMFILES}"/$1; } | |
drop() { cd "$DROPBOX"/$1; } | |
win() { drop win/$1; } | |
LANG=C | |
if [ -f /msys.ico ]; then | |
export MSYSTYPE=1 | |
export LIBRARY_PATH=/mingw/msys/local/lib | |
PATH=/mingw/mingw64/bin:$PATH | |
elif [ -f /msys2.ico ]; then | |
export MSYSTYPE=2 | |
PATH=/mingw64/bin:$PATH | |
fi | |
cmake-root() { . "$DROPBOX/win/bin/cmake-root"; } | |
lf() { ls -FC $*; } | |
la() { ls -aFC $*; } | |
ll() { ls -l $*; } | |
vi() { vim $*; } | |
dojo() { | |
drop work/opengl/dojo | |
cmake-root | |
} |
MSYS の pkg-config への対応など小さな修正を施しました.