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)