Я пытаюсь скомпилировать GLFW на Win7, используя CMake + Makefile с MinGW.
Последовательность команд, которой я следую, генерирует файлы сборки с помощью cmake:
$ cmake . -G "MinGW Makefiles"
-- The C compiler identification is GNU 4.8.1
-- Check for working C compiler: C:/MinGW/bin/gcc.exe
-- Check for working C compiler: C:/MinGW/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Found Vulkan: C:/VulkanSDK/1.1.77.0/Lib32/vulkan-1.lib
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Looking for dinput.h
-- Looking for dinput.h - not found
-- Looking for xinput.h
-- Looking for xinput.h - not found
-- Performing Test _GLFW_HAS_DEP
-- Performing Test _GLFW_HAS_DEP - Success
-- Performing Test _GLFW_HAS_ASLR
-- Performing Test _GLFW_HAS_ASLR - Success
-- Performing Test _GLFW_HAS_64ASLR
-- Performing Test _GLFW_HAS_64ASLR - Failed
-- Using Win32 for window creation
-- Configuring done
-- Generating done
-- Build files have been written to: `E:/workspace_opengl/PotatoRenderer_CMAKE_tests/libs/glfw`
Затем компилирую исходники:
$ mingw32-make.exe
[ 0%] Building C object src/CMakeFiles/glfw.dir/win32_init.c.obj
E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_init.c: In function '_glfwUpdateKeyNamesWin32':
E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_init.c:482:42: error: 'MAPVK_VSC_TO_VK' undeclared (first use in this function)
vk = MapVirtualKey(scancode, MAPVK_VSC_TO_VK);
^
E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_init.c:482:42: note: each undeclared identifier is reported only once for each function it appears in
In file included from c:\mingw\include\windows.h:48:0,
from E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_platform.h:65,
from E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\internal.h:186,
from E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_init.c:28:
E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_init.c: In function '_glfwPlatformInit':
E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_platform.h:146:38: error: '_WIN32_WINNT_VISTA' undeclared (first use in this function)
IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), \
^
E:\workspace_opengl\PotatoRenderer_CMAKE_tests\libs\glfw\src\win32_init.c:528:14: note: in expansion of macro 'IsWindowsVistaOrGreater'
else if (IsWindowsVistaOrGreater())
^
src\CMakeFiles\glfw.dir\build.make:146: recipe for target 'src/CMakeFiles/glfw.dir/win32_init.c.obj' failed
mingw32-make[2]: *** [src/CMakeFiles/glfw.dir/win32_init.c.obj] Error 1
CMakeFiles\Makefile2:121: recipe for target 'src/CMakeFiles/glfw.dir/all' failed
mingw32-make[1]: *** [src/CMakeFiles/glfw.dir/all] Error 2
Makefile:128: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
Я попытался немного погуглить, но не нашел похожей проблемы. Также я пробовал вручную в том числе<Windows.h> или <Winuser.h>, но безуспешно. Есть идеи, что я делаю не так?
заранее спасибо





Ваш компилятор устарел. Используйте MinGW-W64, проще всего установить через MSys2 http://www.msys2.org/