cmake_连接自己的库:2种方法

这篇博客详细介绍了如何在CMake中链接自定义的外部库,包括使用`include_directories`和`link_directories`命令,以及通过`find_package`方法。作者提供了示例代码展示了如何配置`.cmake`文件,并且解释了链接库时可能出现的问题及解决办法。此外,还展示了库项目的`CMakeLists.txt`文件内容,说明了库的构建和安装过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

diaoyong的CmakeLists:

cmake_minimum_required(VERSION 2.8)
project (cout)
#两种方法连接自己生成的外部库
#1.链接库,添加头文件目录的方法
# include_directories(/home/autel/slam测试程序/part2/ku/build) #添加包含目录,搜索头文件所在的根目录,包含头文件所在目录,添加多个特定的头文件搜索路径
# link_directories(/home/autel/slam测试程序/part2/ku/build)   #需要link共享库目录,添加非标准的共享库搜索路径
#2.find_package方法
# 1>需要自己配置.cmake文件,.cmake文件中需要以下的值:
#<NAME>_FOUND
# <NAME>_INCLUDE_DIRS or <NAME>_INCLUDES
# <NAME>_LIBRARIES or <NAME>_LIBRARIES or <NAME>_LIBS
# <NAME>_DEFINITIONS
set(CMAKE_MODULE_PATH /home/autel/slam测试程序/part2/ku)  #设置Find<name>.cmake文件设置查找路径
find_package(test_lib REQUIRED)

# 包含目录添加后,编译通过但是链接出错,main.cpp:(.text+0x5):对‘helloFunc()’未定义的引用
# 需要link共享库目录,我们还没链接到共享库libhello上
# 添加链接库目录
message(STATUS "${CMAKE_MODULE_PATH}")



add_executable(cout cout.cpp)

target_link_libraries(cout test_lib)

2.  Find<name>.cmake文件配置

# 辅助输出信息
message("now using Findtest_lib.cmake find and test_lib.hpp")

# 将demo9.h文件路径赋值给DEMO9LIB_INCLUDE_DIR
FIND_PATH(test_lib_INCLUDE_DIR test_lib.hpp /home/autel/slam测试程序/part2/ku)
message("./h dir ${test_lib_INCLUDE_DIR}")

# 将libdemo9_lib.a文件路径赋值给DEMO9LIB_LIBRARY
FIND_LIBRARY(test_lib_LIBRARY test_lib.so /home/autel/slam测试程序/part2/ku/build)
message("lib dir: ${test_lib_LIBRARY}")

if(test_lib_INCLUDE_DIR AND test_lib_LIBRARY)
    # 设置变量结果
    set(test_lib_FOUND TRUE)
endif(test_lib_INCLUDE_DIR AND test_lib_LIBRARY)

3.ku文件的CMakeLists:

cmake_minimum_required(VERSION 2.8)

project(cout)

#aux_source_directory(. test)
add_library(test_lib SHARED test.cpp)


message(STATUS "--构建库完成")

# #make install 安装动态库以及头文件到指定的文件,可有可无,知识安装到指定的位置
# install(TARGETS test_lib
#         LIBRARY DESTINATION /home/autel/slam测试程序/part2/ku/build)
# # 安装头文件
# install(FILES test_lib.hpp 
#     DESTINATION /home/autel/slam测试程序/part2/ku/build)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值