ucrtとは
Universal CRT へのコードのアップグレード | Microsoft Docs
ここに解説があるが要約する。
まずプログラムを動かすにあたり、少なくともCのランタイムライブラリが必要になる。これはmsvcrtがこれまで用いられてきた
Visual Studio 2015でC lintimeのリファクタリングが行われ、様々な機能が追加された。例えばstrtodでの浮動小数点のパースの改善とかstd::quick_exit
の対応とかそういうのだ。これをUniversal C Runtime、ucrtと呼ぶ。
msys2でもこのucrtに対応する動きが見られている。
msys2におけるucrt対応
わりとひっそりと行われている。
https://github.com/msys2/MINGW-packages/issues/6901
あたりが該当するissueにようにおもえる。
何回かpacman -Syuu
で更新し続けているとそのうちmsys64
直下にucrt64.exe
/``ucrt64.ico`が生えていく。
まだ駆け出しのプロジェクトでパッケージ側も対応していないものもある(私のパッケージもなんとかしないと・・・)。
トラブルシューティング
ucrt64.exe
/``ucrt64.ico`がない!
pacman -Syuu
で更新し続けましょう。そのうち生えます。該当するパッケージは
https://packages.msys2.org/package/msys2-launcher?repo=msys&variant=x86_64
これです。
pacman -Syuu
でucrt64を見に行っている様子がないが?
$pacman -Syuu
:: パッケージデータベースの同期中...
mingw32 は最新です
mingw64 は最新です
ucrt64 は最新です
msys は最新です
のようになっているのが望ましい状態だがucrt64がないぞという場合もある
/etc/pacman.conf
を確認する
[mingw32]
Include = /etc/pacman.d/mirrorlist.mingw32
[mingw64]
Include = /etc/pacman.d/mirrorlist.mingw64
[ucrt64]
Include = /etc/pacman.d/mirrorlist.ucrt64
[msys]
Include = /etc/pacman.d/mirrorlist.msys
上のようなのが含まれているのが望ましいが、ucrt64の項目がないかもしれない。その場合は手動で付け加える。
/etc/pacman.d/mirrorlist.ucrt64
を確認する
そもそもないかもしれない。そういう場合は/etc/pacman.d/mirrorlist.minw64
をコピーして作成して、各URLの末尾をucrt64
に置換すればよい