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

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)
经验分享 程序员 微信小程序 职场和发展