调用支持cmake的第三方库
笔者目前使用的是opencv库和Ceres库,这两个库的源代码都是通过cmake去构建的,当然还有很多库都是支持cmake的,只是笔者的知识比较浅薄,没办法一一列举。
只要是支持cmake的库,都可以通过find_package()这个函数去找到该库的头文件以及库文件的路径,供使用者链接到自己写的代码上。
find_package()函数的目的是找到一个名叫<库名>Config.cmake的文件 ,该文件是在第三方库安装到系统上时生成的,他会记录库的安装路径,即头文件以及库文件的安装位置。
<库名>Config.cmake文件的生成位置一般情况下是默认路径(系统不同,自己去百度查查默认生成位置),find_package()函数会在这个默认路径中寻找该文件,
但是,当我们不想把他安装在系统默安装路径时,通过修改CMAKE_INSTALL_PREFIX,改变库的安装路径,此时find_package()函数不能直接找到<库名>Config.cmake文件(<库名>Config.cmake文件是随着库的安装一起移动的),需要在find_package()函数中显示式指定寻找<库名>Config.cmake文件的路径,即CMAKE_INSTALL_PREFIX修改后的路径, find_package(库名 REQUIRED PATHS “路径”),
也可以set(<库名>_DIR “包含 <库名>Config.cmake文件的绝对路径”),再用 find_package()。
下面是笔者在ubuntu系统下安装的opencv和ceres的位置截图,以及它们对应的<>config.cmake文件,均是默认位置。
头文件位置:
库文件位置:
<>config.cmake位置: