我想通过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)
来自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)
在demo文件夹中,CmakeFile执行以下操作:
set(chipmunk_demos_libraries
chipmunk_static
${GLEW_LIBRARIES}
${OPENGL_LIBRARIES}
)
S0我的问题是:
我试图找到花栗鼠静态库而没有成功:
add_subdirectory(chipmunk)
find_package(SDL2 REQUIRED)
find_library(CHIPMUNK_LIB chipmunk_static)
message(${CHIPMUNK_LIB})
答案 0 :(得分:1)
因此,使用CMake,当您“找到”一个库时,它将查找已安装的库,而不是由子项目构建的库。因此,您应该在某处引用引用其中包含Chipmunk的目录的行。在我的项目中:
add_subdirectory(external/Chipmunk2D)
然后,当您构建可执行文件(或库,无论是什么)时,您可以按名称列出由子项目构建的库。就我而言,glfw,chipmunk_static和enet都是由CMake在子项目中构建的:
target_link_libraries(my_executable
${OPENGL_LIBRARIES}
glfw
chipmunk_static
enet
)