CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板
—— 杭州 2024-03-20 凌晨1:06
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2466a6590ead46ae876eceb5e5f086e0.png#pic_center)
code review!
文章目录
1.通用CMakeLists.txt模板
代码
# 设置CMake的最低版本要求
cmake_minimum_required(VERSION 3.0)
# 设置项目名称和版本
project(MyProject)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
# 假设你的库文件名为libmylibrary.a (静态库) 或 libmylibrary.so (动态库)
# 并且库文件位于项目的third_party目录下
# 添加自己的库的头文件目录
include_directories(${PROJECT_SOURCE_DIR}/third_party/mylibrary/include)
# 添加自己的库的库目录
link_directories(${PROJECT_SOURCE_DIR}/third_party/mylibrary/lib)
# 指定生成目标
add_executable(${PROJECT_NAME} src/main.cpp)
# 链接库到你的可执行文件
target_link_libraries(${PROJECT_NAME} mylibrary)
2.GPT4给出的改进建议
这个CMakeLists.txt
文件看上去基本是正确的,但是有几个小地方可能需要根据具体情况进行调整。以下是一个加了注释和可能需要注意的地方的版本:
# 设置CMake的最低版本要求
cmake_minimum_required(VERSION 3.0)
# 设置项目名称和版本
project(MyProject VERSION 1.0.0) # 如果你需要指定版本号,应该这样设置
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True) # 确保使用了C++11
# 假设你的库文件名为libmylibrary.a (静态库) 或 libmylibrary.so (动态库)
# 并且库文件位于项目的third_party目录下
# 添加自己的库的头文件目录
include_directories(${PROJECT_SOURCE_DIR}/third_party/mylibrary/include)
# 添加自己的库的库目录
# 注意: 在现代CMake中,更推荐使用target_link_directories和target_link_libraries结合使用
# link_directories应该尽量避免使用,因为它是全局的,会影响所有的target
link_directories(${PROJECT_SOURCE_DIR}/third_party/mylibrary/lib)
# 指定生成目标
add_executable(${PROJECT_NAME} src/main.cpp)
# 链接库到你的可执行文件
# 如果mylibrary是第三方库,且你没有使用add_subdirectory或find_package来包含它,
# 你可能需要使用find_library来查找库文件的确切位置
target_link_libraries(${PROJECT_NAME} mylibrary)
注意事项:
- 如果你有多个版本的
mylibrary
库,并且希望确保链接到正确的版本,可能需要更详细地指定库文件的路径或版本。 - 如果
mylibrary
是动态链接库,确保在运行时它可以在系统的库路径中找到,或者设置LD_LIBRARY_PATH
环境变量等。 - 如果是跨平台项目,一些路径可能需要根据操作系统进行调整,例如使用
CMAKE_PREFIX_PATH
。 - 现代CMake推荐使用target-specific命令如
target_include_directories
和targe