Box2D 源码编译

来源:互联网 发布:mac skype 下载 编辑:程序博客网 时间:2024/05/01 11:37

Box2D官网:Box2D

Box2D源码:Open Source

Requiremets:

1.Cmake

2.MinGW

3.Box2D

Step 1.

1).


2).点击Configure

出现如下提示:

You have called ADD_LIBRARY for library glfw without any source files. This typically indicates a problem with your CMakeLists.txt file
打开Box2D\Box2D\glfw\CMakeLists.txt找到如下段落:

if (_GLFW_COCOA)    set(glfw_HEADERS ${common_HEADERS} cocoa_platform.h iokit_joystick.h                     posix_tls.h)    set(glfw_SOURCES ${common_SOURCES} cocoa_init.m cocoa_monitor.m                     cocoa_window.m iokit_joystick.m mach_time.c posix_tls.c)elseif (_GLFW_WIN32)    set(glfw_HEADERS ${common_HEADERS} win32_platform.h win32_tls.h                     winmm_joystick.h)    set(glfw_SOURCES ${common_SOURCES} win32_init.c win32_monitor.c win32_time.c                     win32_tls.c win32_window.c winmm_joystick.c)elseif (_GLFW_X11)    set(glfw_HEADERS ${common_HEADERS} x11_platform.h xkb_unicode.h                     linux_joystick.h posix_time.h posix_tls.h)    set(glfw_SOURCES ${common_SOURCES} x11_init.c x11_monitor.c x11_window.c                     xkb_unicode.c linux_joystick.c posix_time.c posix_tls.c)elseif (_GLFW_WAYLAND)    set(glfw_HEADERS ${common_HEADERS} wl_platform.h linux_joystick.h                     posix_time.h posix_tls.h xkb_unicode.h)    set(glfw_SOURCES ${common_SOURCES} wl_init.c wl_monitor.c wl_window.c                     linux_joystick.c posix_time.c posix_tls.c xkb_unicode.c)elseif (_GLFW_MIR)    set(glfw_HEADERS ${common_HEADERS} mir_platform.h linux_joystick.h                     posix_time.h posix_tls.h xkb_unicode.h)    set(glfw_SOURCES ${common_SOURCES} mir_init.c mir_monitor.c mir_window.c                     linux_joystick.c posix_time.c posix_tls.c xkb_unicode.c)endif()

将整个段落替换成如下:

if (_GLFW_COCOA)set(glfw_HEADERS ${common_HEADERS} cocoa_platform.h iokit_joystick.h                 posix_tls.h)set(glfw_SOURCES ${common_SOURCES} cocoa_init.m cocoa_monitor.m                 cocoa_window.m iokit_joystick.m mach_time.c posix_tls.c)elseif (_GLFW_WIN32)set(glfw_HEADERS ${common_HEADERS} win32_platform.h win32_tls.h                 winmm_joystick.h)set(glfw_SOURCES ${common_SOURCES} win32_init.c win32_monitor.c win32_time.c                 win32_tls.c win32_window.c winmm_joystick.c)elseif (_GLFW_X11)set(glfw_HEADERS ${common_HEADERS} x11_platform.h xkb_unicode.h                 linux_joystick.h posix_time.h posix_tls.h)set(glfw_SOURCES ${common_SOURCES} x11_init.c x11_monitor.c x11_window.c                 xkb_unicode.c linux_joystick.c posix_time.c posix_tls.c)elseif (_GLFW_WAYLAND)set(glfw_HEADERS ${common_HEADERS} wl_platform.h linux_joystick.h                 posix_time.h posix_tls.h xkb_unicode.h)set(glfw_SOURCES ${common_SOURCES} wl_init.c wl_monitor.c wl_window.c                 linux_joystick.c posix_time.c posix_tls.c xkb_unicode.c)elseif (_GLFW_MIR)set(glfw_HEADERS ${common_HEADERS} mir_platform.h linux_joystick.h                 posix_time.h posix_tls.h xkb_unicode.h)set(glfw_SOURCES ${common_SOURCES} mir_init.c mir_monitor.c mir_window.c                 linux_joystick.c posix_time.c posix_tls.c xkb_unicode.c)else()set(glfw_HEADERS ${common_HEADERS} win32_platform.h win32_tls.h                     winmm_joystick.h)set(glfw_SOURCES ${common_SOURCES} win32_init.c win32_monitor.c win32_time.c                     win32_tls.c win32_window.c winmm_joystick.c)            endif()
替换完成之后再次configure,configure完成之后点击generate产生MakeFile文件,但是generate会出现如下错误:



解决办法:

将Box2D\imgui文件夹下所有文件复制到Box2D\Testbed\Framework文件夹下,但是还少两个文件:RenderGL3.h RenderGL3.cpp文件,链接地址:RenderGL3

完成该步骤之重新使用cmake进行构建

Step 2.

在构建的地址打开命令行输入make出现如下错误:


将出现问题的文件中的nullptr统一改成NULL

修改完之后使用cmake重新构建,回到Step 2输入make指令

Step 3. 

make install



0 0