背景
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
とりあえずはソースコードにこのように記述して対応するしかない.