MSYS2/CMake/G++


glbinding ライブラリのビルドに苦しんでいたのですが,なんとなくごまかしました.

いろいろ調べていたところ,

#ifdef WIN32
    ...
#else
#  include 
#endif

のようなコードがあったのですが,ビルドが始まると glx.h がないと怒られるのです.glx は X-Windows と OpenGL をまたぐライブラリのようですので,Windows にないのは当然といえます.

それにしても,なんで WIN32 を通り抜けて #else 節が残ってしまうんだろう?

cpp -E に WIN32/WIN64 のような内容を食わせるとちゃんと WIN32 も WIN64 も認識しているのに...

MSYS2 の toolchain を再度インストールし直したり,MSYS2 に含まれるいろんな toolchain の組み合わせでビルドしたり,CMake を Windows 版,MSYS2 版,mingw64 版ととっかえひっかえしながらやってたんですが,ついに根つき,以下を指定することで逃げました.

CPPFLAGS="-DWIN32 -DWIN64"

明らかに怪しい逃げなんだけど,ひとまずビルドできたようだ...ものすごく気持ち悪い.