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)
来自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>
在演示文件夹中,CmakeFile 执行以下操作:
set(chipmunk_demos_libraries
chipmunk_static
${GLEW_LIBRARIES}
${OPENGL_LIBRARIES}
)
</pre>
S0 我的问题是:
- 我是否只需要 运行 来自 chipmunk 库的 Makefile 一次,这样我就可以构建静态库?
- 在我将 chipmunk 的 CMakefile 包含在我的 Cmakefile 后,它似乎找不到静态库(我在 Linux 顺便说一句 )
- 如果我建了静态库,能不能把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
)
我想 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)
来自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>
在演示文件夹中,CmakeFile 执行以下操作:
set(chipmunk_demos_libraries chipmunk_static ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES} ) </pre>
S0 我的问题是:
- 我是否只需要 运行 来自 chipmunk 库的 Makefile 一次,这样我就可以构建静态库?
- 在我将 chipmunk 的 CMakefile 包含在我的 Cmakefile 后,它似乎找不到静态库(我在 Linux 顺便说一句 )
- 如果我建了静态库,能不能把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
)