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)