SDL + Chipmunk CMake配置

时间:2018-11-04 08:24:43

标签: makefile cmake sdl chipmunk

我想通过CMake将Chipmunk2D physics framework与SDL链接。

我具有以下项目结构:

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

我了解了静态库和共享库,并决定要使用静态库,所以我进入了Chipmunk文件夹,并运行了 cmake。

1。第一个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)
    

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

    
    set(chipmunk_demos_libraries
    chipmunk_static
    ${GLEW_LIBRARIES}
    ${OPENGL_LIBRARIES}
    )
    

S0我的问题是:

  1. 我只需要运行一次来​​自Chipmunk库的Makefile即可构建静态库吗?
  2. 在我的Cmakefile中包含来自花栗鼠的CMake文件后,似乎找不到静态库(我在Linux上
  3. 如果我构建了静态库,是否可以从花栗鼠中删除所有src内容并仅保留标题?

我试图找到花栗鼠静态库而没有成功


add_subdirectory(chipmunk)
find_package(SDL2 REQUIRED)
find_library(CHIPMUNK_LIB chipmunk_static)
message(${CHIPMUNK_LIB})

1 个答案:

答案 0 :(得分:1)

因此,使用CMake,当您“找到”一个库时,它将查找已安装的库,而不是由子项目构建的库。因此,您应该在某处引用引用其中包含Chipmunk的目录的行。在我的项目中:

add_subdirectory(external/Chipmunk2D)

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

target_link_libraries(my_executable
    ${OPENGL_LIBRARIES}
    glfw
    chipmunk_static
    enet
)