Cmake配置外部依赖库(以Opencv和Boost为例)
Cmake对于外部依赖库,需要知道外部库的头文件路径,库文件路径以及库的名字。比如,对于要使用的Boost库,需要知道头文件的位置,库目录的位置以及库依赖。
具体使用如下:
include_directories(xxx/include/) # 头文件路径
link_directories(xxx/lib/) # 库文件路径
target_link_libraries (foo xx.lib xx.so) # 库的名字
为了使用调用外部库,可以手动指令上述代码中的路径和名称,Cmake提供了find_package程序,用于自动确定上述路径,从而减轻代码移植的复杂度。
程序的参数如下。
find_package(Boost[version] [EXACT] # 可选项,最小版本或者确切所需版本[REQUIRED] # 可选项,如果找不到所需库,报错[COMPONENTS <libs>...] # 所需的库名称,比如说. "date_time" 代表 "libboost_date_time")
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/jinzhu1911/article/details/104940277
通过上述程序运行,可以自动确定以下变量。
Boost_FOUND - 如果找到了所需的库就设为true
Boost_INCLUDE_DIRS - Boost头文件搜索路径
Boost_LIBRARY_DIRS - Boost库的链接路径
Boost_LIBRARIES - Boost库名,用于链接到目标程序
Boost_VERSION - 从boost/version.hpp文件获取的版本号
Boost_LIB_VERSION - 某个库的版本
上述代码中,Boost_INCLUDE_DIRS
就是头文件所在目录,Boost_LIBRARY_DIRS
是库文件所在目录,Boost_LIBRARIES
是BOOST所有的库的列表。后续的cmake
设置就可以根据此进行设置,如
include_directories(${Boost_INCLUDE_DIRS}) # 头文件路径
link_directories(${Boost_LIBRARY_DIRS}) # 库文件路径
target_link_libraries (foo ${Boost_LIBRARIES}) # 库的名字
对于opencv
也是类似,利用find_package(OpenCV REQUIRED)
确定以下变量。
OpenCV_VERSION
OpenCV_LIBS
OpenCV_INCLUDE_DIRS
参考资料
CMake中引用Boost库