SDL + 花栗鼠 CMake 配置

SDL + Chipmunk CMake config

我想 link Chipmunk2D physics framework 通过 CMake 使用 SDL。

我有以下项目结构:

MyProject
    -chipmunk:
      --include
      --demo:
        ---CMakeList.txt
      --src:
       ---CMakeList.txt
      --CMakeList.txt
    -src:
      --main.cpp
    -CMakeLists.txt

我阅读了静态库和共享库,并决定使用静态库,所以我进入花栗鼠文件夹并 运行 cmake。

1.The 第一个 CMakeList 文件设置选项:

  message(STATUS "Set BUILD_STATIC option ON")
  option(BUILD_SHARED "Build and install the shared library" ON)
  option(BUILD_STATIC "Build as static library" ON)
  option(INSTALL_STATIC "Install the static library" ON)

之后:

add_subdirectory(src)
  1. 来自src的CMakeList.txt进入动作:

    
    if(BUILD_STATIC)
    message(STATUS "BUILDING chipmunk_static")
    add_library(chipmunk_static STATIC ${chipmunk_source_files})
    set_target_properties(chipmunk_static PROPERTIES OUTPUT_NAME chipmunk)
     if(INSTALL_STATIC)
       message(STATUS "INSTALL chipmunk_static ${LIB_INSTALL_DIR}")
       install(TARGETS chipmunk_static ARCHIVE DESTINATION {LIB_INSTALL_DIR})
     endif(INSTALL_STATIC)
    endif(BUILD_STATIC)
    </pre>

  2. 在演示文件夹中,CmakeFile 执行以下操作:

    
    set(chipmunk_demos_libraries
    chipmunk_static
    ${GLEW_LIBRARIES}
    ${OPENGL_LIBRARIES}
    )
    </pre>

S0 我的问题是:

  1. 我是否只需要 运行 来自 chipmunk 库的 Makefile 一次,这样我就可以构建静态库?
  2. 在我将 chipmunk 的 CMakefile 包含在我的 Cmakefile 后,它似乎找不到静态库(我在 Linux 顺便说一句
  3. 如果我建了静态库,能不能把chipmunk的src内容全部删掉,只保留headers?

我试图找到 chipmunk 静态库但没有成功


add_subdirectory(chipmunk)
find_package(SDL2 REQUIRED)
find_library(CHIPMUNK_LIB chipmunk_static)
message(${CHIPMUNK_LIB})
</pre>

因此,对于 CMake,当您 "find" 库时,它会查找已安装的库,而不是由子项目构建的库。所以在某个地方你应该有一行你引用其中有 Chipmunk 的目录。在我的项目中:

add_subdirectory(external/Chipmunk2D)

然后当您构建可执行文件(或库,等等)时,您可以只按名称列出子项目构建的库。在我的例子中,glfw,chipmunk_static,和 enet 都是由 CMake 在子项目中构建的:

target_link_libraries(my_executable
    ${OPENGL_LIBRARIES}
    glfw
    chipmunk_static
    enet
)