How to compile Box2D in Linux?

后端 未结 3 632
暖寄归人
暖寄归人 2020-12-21 06:27

Compiling the Box2d Tesbed is supposed to be simple:

from iforce2d:

Download the Box2D source code archive from here. If you want to use the t

3条回答
  •  难免孤独
    2020-12-21 07:32

    If you have the most recent commit from the Box2D repo checked out, you can restore the original CMake files by running this git command in the repository directory:

    git checkout 05ee3c3c22af9ac1e5d88061d0b473f814c8210f^ \
     Box2D/Box2D/Box2DConfig.cmake.in \
     Box2D/Box2D/CMakeLists.txt \
     Box2D/Box2D/UseBox2D.cmake \
     Box2D/CMakeLists.txt \
     Box2D/HelloWorld/CMakeLists.txt \
     Box2D/Testbed/CMakeLists.txt \
     Box2D/glew/CMakeLists.txt \
     Box2D/glfw/CMakeLists.txt
    

    Since Box2D has started using C++11 features since this commit, so you will need to add this line to Box2D/CMakeLists.txt:

    set (CMAKE_CXX_STANDARD 11)
    

    If you only want the core library built, you're done; just run the following commands:

    mkdir build
    cd build
    cmake -D BOX2D_BUILD_EXAMPLES=OFF ../Box2D
    

    Testbed

    If you want the Testbed, things get a bit more involved. The CMakeLists for Box2D's copy of GLFW seems to be completely broken. Open Box2D/CMakeLists.txt, and find these two lines:

    add_subdirectory(glew)
    add_subdirectory(glfw)
    

    Replace them with the following. This will cause the build to use your system versions of the libraries, so you will need to have them installed:

    find_package(GLEW REQUIRED)
    if (GLEW_FOUND)
      include_directories(${GLEW_INCLUDE_DIRS})
      link_libraries(${GLEW_LIBRARIES})
    endif()
    
    find_package(PkgConfig REQUIRED)
    pkg_search_module(GLFW REQUIRED glfw3)
    include_directories(${GLFW_INCLUDE_DIRS})
    

    Open Box2D/Testbed/CMakeLists.txt. At the top of the file, under set(Testbed_Framework_SRCS, remove the 4 lines referring to imgui and RenderGL3. Add the following lines in that section:

    ../imgui/imgui.h
    ../imgui/imgui.cpp
    ../imgui/imgui_draw.cpp
    ../imgui/imgui_impl_glfw_gl3.cpp
    

    Scroll to the bottom and replace the glew and glfw lines with:

    ${GLEW_LIBRARIES}
    ${GLFW_STATIC_LIBRARIES}
    

    Finally replace

    file(COPY ../Build/Data DESTINATION ..)

    with

    file(COPY ./Data DESTINATION .)

    At this point, the full library and testbed should be buildable:

    mkdir build
    cd build
    cmake ../Box2D
    

提交回复
热议问题