覺書: MSYS2導入手順
前置き
Cygwin上でMingw64向けClangを使つてゐたが、ライブラリ周りのことでリンクが上手くいかない事態に陷つた。何か色々面倒になつたので、MSYS2を試してみることとした。
手順
- インストールパッケージをダウンロードしてきて實行する。
- ConEmuの「Settings」の[Startup]>[Tasks]にMSYS2を追加、設定。
- Commandsに以下を設定。これでMingw64を使ひ、シンボリックリンクにも對應する。
- set MSYS=winsymlinks:lnk & set MSYSTEM=MINGW64 & "C:\msys64\usr\bin\bash.exe" --login -i
- Task Parametersに以下を設定。なほ、msys2.icoの外、ucrt64.ico、clang64.icoなども可。
- -icon C:\msys64\msys2.ico
- Commandsに以下を設定。これでMingw64を使ひ、シンボリックリンクにも對應する。
- ConEmuから起動して、システムパッケージ?更新。
- $ pacman -Syuu
- warningが出て固まつたが、その場合は再度實行せよとのことだつたので、再度起動、實行。
- パッケージを導入していく。pacman -S hogehogeでhogehogeを導入する。
- openssh
- ~/.ssh を既存環境からコピー
- git
- mingw-w64-x86_64-gcc
- bison
- flex
- make
- mingw-w64-x86_64-cmake
- mingw-w64-x86_64-clang
- mingw-w64-x86_64-boost
- mingw-w64-x86_64-libpng
- mingw-w64-x86_64-libjpeg-turbo
- mingw-w64-x86_64-libiconv
- openssh
後日(R3.12.5〜)追記
新規に購入したノートPC(Windows11)に導入したパッケージは以下のとほり。パッケージ導入までの手順は從前と變はらぬが、MINGW64ではなくUCRT64であれこれするやうに變更した。
- git
- vim
- openssh
- make
- rsync
- diffutils
- man-pages-posix
- winpty (ConEmuでvimを動かさうとしたときに必要であつた。前はそんなこと無かつたと思つたのに……。)
- mingw-w64-ucrt-x86_64-toolchain
- mingw-w64-ucrt-x86_64-cmake
- mingw-w64-ucrt-x86_64-ruby
- mingw-w64-ucrt-x86_64-libpng
- mingw-w64-ucrt-x86_64-libjpeg-turbo
- mingw-w64-ucrt-x86_64-nlohmann-json
- mingw-w64-ucrt-x86_64-SDL2
- mingw-w64-ucrt-x86_64-SDL2_ttf
- mingw-w64-ucrt-x86_64-doxygen
- mingw-w64-ucrt-x86_64-graphviz
- mingw-w64-ucrt-x86_64-SDL2_mixer
- mingw-w64-ucrt-x86_64-nodejs
- mingw-w64-ucrt-x86_64-python-fonttools
- mingw-w64-ucrt-x86_64-python-brotli
- mingw-w64-ucrt-x86_64-SDL2_image
- mingw-w64-ucrt-x86_64-clang (使ひ廻すならCLANG64でやるべきよな……)
- mingw-w64-ucrt-x86_64-ninja
後日(R6.6.1〜)追記
環境を再構築する羽目に陷つた。入れ直したものは以下。
- git
- openssh
- rsync
- diffutils
- man-pages-posix
- mingw-w64-ucrt-x86_64-toolchain
- mingw-w64-ucrt-x86_64-cmake
- mingw-w64-ucrt-x86_64-ruby
- mingw-w64-ucrt-x86_64-libpng
- mingw-w64-ucrt-x86_64-libjpeg-turbo
- mingw-w64-ucrt-x86_64-nlohmann-json
- mingw-w64-ucrt-x86_64-doxygen
- mingw-w64-ucrt-x86_64-graphviz
mingw-w64-ucrt-x86_64-ninja は指示せずとも何れかと一緒にインストールされた。
落とし穴
mingw-w64-x86_64-cmakeを-G "MSYS Makefiles"で利用したところ、${CMAKE_INSTALL_PREFIX}が "C:/Program Files (x86)/Project" に設定されてしまつて難儀した。結局、コマンドラインオプションで-DCMAKE_INSTALL_PREFIX=/usr/localとやつて廻避することに。えらく時間を使つてしまつた。
本件、-G "Unix Makefiles"でも何かの問題が出てどうにもならなかつたといふことも書いておかないと駄目な氣がしたので追記しておく。
後日追記
CMAKE_INSTALL_PREFIXに設定するディレクトリは、MINGW64なら/mingw64/local、UCRT64なら/ucrt64/local、CLANG64なら/clang64/local、みたいにしておくのが吉か。
後日(R6.5.7)追記
さすがにそろそろNinjaを試してみようと、インストールして cmake -G "Ninja" 〜 とやつたが、思つた以上に何事も無く事が進んだ。まあ、本來さうでないと困るわけだが……。
で、結局……
<filesystem>を使はうと思つたとき、リンク周りでどうにもうまくいかないので、Clangは一旦諦めて、GCCを使ふことにした。Cygwinに入つてゐるコンパイラやライブラリよりも新しいバージョンのものが使へるやうになつたみたいなので、MSYSを導入した甲斐があつたとは言へるのが、せめてもの救ひであらう。
後日(R3.3.23)追記
<filesystem>は使へるやうになつたものの、-staticを指定すると大量のwarningが出るのはどうにもならない、といふあたりで、やはり見送り。
後日(R3.4.28)追記
いつの間にか追加されてゐたclang64環境を試してみたが、<filesystem>で名前解決不能と來たから、やはり使へないのかなあ、みたいな。libc++experimental.aが提供されてゐるので、<experimental/filesystem>なら使へるのかなあ、とは思ふのだが、そのためにわざわざソースコードを書き直したくない。
後日(R3.5.6)追記
clang64環境試用の續き。<experimental/filesystem>とlibc++experimental.aで、といふアイデアをやつつけコードで試したら、std::experimental::filesystemは古い、std::filesystemを使へ、といふ趣旨のメッセージが出て、詰んだw 態々-std=c++14とかやつても無理つぽい。
nmで少し調べたが、libc++.aやlibc++experimental.aにはにfilesystem絡みのシンボルがそもそも入つてないのね……。それとも儂の遣り方が何か根本的に間違つてゐるのだらうか????
後日(R3.6.9)追記
clang64環境試用の更なる續き。やうやく<filesystem>周りのものが實裝されたと思しく、ごくごく單純ながら今までリンクで轉けてゐたコードが通るやうになつた。出來た.exeをobjdumpで見てみるに、ucrtベースつぽい。これからはUCRTを使ふ方がいいのかしら。
落とし穴その2
doxygen、入れはしたものの、fontが云々でまともに動かず、そんならUbuntu on WSLから叩くからええわ、とて、放置することにした。
後日(R3.3.23)追記
久々に試したら、dot周りが少し怪しい意外はちやんと動いたので、それでいいことにした。
後日(R3.4.28)追記
その後、LaTeX關係の生成を止めて、生成畫像をpngからsvgにする方向の設定の見直しをしたら、割と良い感じになつた。dotは惡くなかつたつぽい。
導入パッケージ一覽(舊)
後日導入したものを含めて記しておくこととする。()内は最後に確認したバージョン。
【後日追記】ここに列記したのはR3.12以前、デスクトップのWindows10+MSYS2に導入したもの。
MSYS
- openssh
- git
- bison
- flex
- make
- man-pages-posix
- winpty
- diffutils
MINGW64
- mingw-w64-x86_64-gcc (10.3.0)
- mingw-w64-x86_64-cmake (3.20.3)
- mingw-w64-x86_64-clang (12.0.0)
- mingw-w64-x86_64-boost
- mingw-w64-x86_64-libpng
- mingw-w64-x86_64-libjpeg-turbo
- mingw-w64-x86_64-libiconv
- mingw-w64-x86_64-doxygen
- mingw-w64-x86_64-SDL2
- mingw-w64-x86_64-SDL2_gfx
- mingw-w64-x86_64-SDL2_image
- mingw-w64-x86_64-SDL2_mixer
- mingw-w64-x86_64-SDL2_net
- mingw-w64-x86_64-SDL2_ttf
- mingw-w64-x86_64-smpeg2
- mingw-w64-x86_64-nlohmann-json
CLANG64
- mingw-w64-clang-x86_64-toolchain
- mingw-w64-clang-x86_64-cmake
- mingw-w64-clang-x86_64-libpng
- mingw-w64-clang-x86_64-libjpeg-turbo
- mingw-w64-clang-x86_64-SDL2
- mingw-w64-clang-x86_64-SDL2_mixer
- mingw-w64-clang-x86_64-SDL2_ttf
- mingw-w64-clang-x86_64-nlohmann-json
UCRT64
- mingw-w64-ucrt-x86_64-toolchain
- mingw-w64-ucrt-x86_64-cmake
- mingw-w64-ucrt-x86_64-libpng
- mingw-w64-ucrt-x86_64-libjpeg-turbo
- mingw-w64-ucrt-x86_64-SDL2
- mingw-w64-ucrt-x86_64-SDL2_image
- mingw-w64-ucrt-x86_64-SDL2_mixer
- mingw-w64-ucrt-x86_64-SDL2_ttf
- mingw-w64-ucrt-x86_64-nlohmann-json