背景
llvm-mingw で Windows アプリを cross-compile したい.
しかし, case-sensitive なファイルシステム(e.g. Ubuntu 18.04 + EXT4)では, #include <Windows.h>
はエラーになる.
(mingw パッケージではヘッダ名はすべて小文字になっているため).
clang
で case insensitive にするパッチがあるが(2016 年!) 取り込まれていない
clang-cl
clang-cl(MSVC に擬態するモード)は, しかし case-sensitive であるのを想定しており, #include <windows.h>
とすると nonportable-include-path warning がでる.
まとめ
# ifdef _WIN32
# ifdef __MINGW32__ // mingw gcc, llvm-mingw(clang)
# include <windows.h>
# else // MSVC, clang-cl
# include <Windows.h>
# endif
# endif
とりあえずはソースコードにこのように記述して対応するしかない.