背景
CMake + Ninja + clang-cl で C++ プログラムビルドしたい.
しかし, STL を使わない単純な C++ プログラムをコンパイルしようとしても, cmake bootstrap 時に, linker が見つからないなどエラーが出てしまう.
解決方法
vcvars で, 一旦ビルド環境に入っていないとだめでした.
cmake が, いくらか環境変数を見て, コンパイラの振る舞いを判断しているっぽそうです.
vcvars で一旦環境に入るか, vcvars がやっていること相当を cmake 起動前に設定すればいけそうです.
cross compile
通常 clang でいけるっぽい
(clang-cl は実態は clang のはず)
llvm repo に WinMsvc.cmake があるのでこれが参考になりそう.
native(Windows)でビルドする.
LLVM の WinMsvc.cmake を少し修正すればいけます(-imsvc
でのパスを quote で囲む)
TODO
- llvm の repo にある WinMsvc.cmake を詳細に解読する.
- WSL 環境でビルドできるようにする.