無限にやりなおしたので残すだけ残しておく。MSVC (2022, 17.9.5)、MinGWだと思います。
結論↓
$ cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\\LLVM" $ cmake --build build --target install --config Release
- まず自前ビルドじゃないとllvm-configが無いとかで論外
- Releaseにしないとシンボル名がinkwell側と一致しない (はい)
libinkwell-7ed57652215939ba.rlib(inkwell-7ed57652215939ba.inkwell.4aa329b0da52b41-cgu.06.rcgu.o) : error LNK2019: 未解決の外部シンボル LLVMDisposeTargetMachineOptions が関数 _ZN80_$LT$inkwell..targets..TargetMachineOptions$u20$as$u20$core..ops..drop..Drop$GT$4drop17hed26e3f5fd1d55ebE で参照されました
- インストール先には空白を入れないほうが良い (いつもの)
warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9024 : �\�[�X�t�@�C���̎�� 'Files' �͔F���ł��܂���ł����B�I�u�W�F�N�g �t�@�C���Ɖ��肵�܂��B warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9024 : �\�[�X�t�@�C���̎�� 'Files' �͔F���ł��܂���ł����B�I�u�W�F�N�g �t�@�C���Ɖ��肵�܂��B warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9027 : �\�[�X�t�@�C�� 'Files' �͖�������܂��B warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9024 : �\�[�X�t�@�C���̎�� '(x86)\LLVM\include' �͔F���ł��܂���ł����B�I�u�W�F�N�g �t�@�C���Ɖ��肵�܂��B warning: llvm-sys@180.0.0: cl : �R�}���h ���C�� warning D9027 : �\�[�X�t�@�C�� '(x86)\LLVM\include' �͖�������܂��B
- installは管理者権限で走らせる (それはそう)
- llvm-sysに書いてあった注意 は結局よくわからなかった (inkwellのテストコードは通った)
- PATHはよくわからなかったので
LLVM_SYS_180_PREFIX
をC:\LLVM
で指定した - コンパイル中、文字コード関連の警告 (C4819) がめっちゃ出る (でもchcpを呼んだ結果は65001なんだよな)
- installではなくcheck-llvmを走らせるとテストを走らせてくれるが落ちる (文字コード関連)
C:\Users\phi16\source\llvm-project\llvm\unittests\Support\JSONTest.cpp(249): error : Expected equality of these values: [C:\Users\phi16\source\llvm-project\build\test\check-llvm.vcxproj] fixUTF8(Invalid.first) Which is: "lone trailing \xEF\xBF\xBD\xEF\xBF\xBD bytes" As Text: "lone trailing ?? bytes" Invalid.second Which is: "lone trailing \x81" "E\xBD\x81" "E\xBD bytes"
↑ 落ちてるのは一箇所でそこはinvalidなUTF8を文字化けさせる処理だったのでまぁ別にええか…?という気持ちになってる