事象
boost 1.67とかいう古めのバージョンをビルドする必要があったのだがビルドできない。
...patience...
...found 712 targets...
...updating 26 targets...
msvc.write-setup-script bin.v2\standalone\msvc\msvc-14.0\address-model-64\architecture-x86\msvc-setup.bat
compile-c-c++ bin.v2\libs\system\build\msvc-14.0\debug\address-model-64\link-static\runtime-link-static\threading-multi\error_code.obj
call "bin.v2\standalone\msvc\msvc-14.0\address-model-64\architecture-x86\msvc-setup.bat" amd64 >nul
cl /Zm800 -nologo @"bin.v2\libs\system\build\msvc-14.0\debug\address-model-64\link-static\runtime-link-static\threading-multi\error_code.obj.rsp"
...failed compile-c-c++ bin.v2\libs\system\build\msvc-14.0\debug\address-model-64\link-static\runtime-link-static\threading-multi\error_code.obj...
切り分け
ログにエラーログを出してくれないので手動でclコマンドを叩いてみる
C:\msys64\home\yumetodo\arikitari\contrib\boost\boost_1_67_0>cl /Zm800 -nologo @"bin.v2\libs\system\build\msvc-14.0\debug\link-static\runtime-link-static\threading-multi\error_code.obj.rsp"
error_code.cpp
C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\wchar.h(316): error C3861: '_mm_loadu_si64': 識別子が見つかりませんでした
C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\wchar.h(442): error C3861: '_mm_loadu_si64': 識別子が見つかりませんでした
C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt\wchar.h(443): error C3861: '_mm_loadu_si64': 識別子が見つかりませんでした
原因
つまるところWindows 11 SDK (10.0.26100.6901)がわるい。ビルド番号的にWindows 11 24H2向け。つまりこれ以降のものはVisual Studio 2015で使えないということだろう。
複数バージョンのVisual Studioを入れていることは多いだろうし、バイナリに互換があるので最新のVisual Studioを入れていてもC++コンパイラだけ古いものを入れているケースもあろうかと思うが、注意が必要である。
