基本的CMakeLists.txt并不难,主要有生成库、生成执行文件、链接二者以及找库find_package、找头文件include_directories、生成执行文件add_executable、链接库和执行文件target_link_libraries两种方法组成。
但是遇到大型库的编写,目标是生成一个新的大型库myslam,生成执行文件、链接二者。需要提前声明生成执行文件在bin,库在lib中,并把OPenCV、Sophus这些库整合到一个大型的第三方库THIRD_PARTY_LIBS中,供后面的target_link_libraries(myslam ${THIRD_PARTY_LIBS})用。myslam中包括两部分:frame.cpp、mappoint.cpp、map.cpp等+第三方库THIRD_PARTY_LIBS
一、简单的
1)从头开始:(生成库、生成执行文件、链接二者)
CMakeLists.txt
add_library( hello_shared SHARED libHelloSLAM.cpp ) # 生成库
add_executable( useHello useHello.cpp ) #执行文件
target_link_libraries( useHello hello_shared ) # 链接库到执行文件上
1、先生成库文件libhello_shred.so,需要libHelloSLAM.cpp和add_library(hello_shared SHARED libHelloSLAM.cpp)
2、之后要建立头文件libhellSLAM.h告诉如何调用库里的函数,需要把库连接到可执行文件名中 target_link_libraried(useHello hello_shared)
3、主函数useHello.cpp使用头文件
2)利用现成的库:
只需要建立头文件,说明怎么使用即可。
3)大型的库只需修改CMakeList.txt即可(找库、添加头文件、生成执行文件、链接库和执行文件)
头文件也已经建立好了,只需找到库然后加入头文件即可使用
CMakeLists.txt
find_package( OpenCV REQUIRED ) #寻找OpenCV库