find_package
检查需要的包的包名
1 | ╰─ dpkg -L libopencv-dev | grep 'cmake' |
从上面的可以看到这个库的cmake文件是OpenCVConfig.cmake, 所以它的库名字是OpenCV, 所以CMakeLists.txt可以这么写:
1 | find_package(OpenCV REQUIRED) |
find_package 会对应设置以下几类变量:
[PackageName]_FOUND: 如果找到了包,则会设置为TRUE,否则为FALSE。
[PackageName]_INCLUDE_DIRS 或 [PackageName]_INCLUDES: 包含目录列表,你可以用这个变量来将包含目录添加到你的项目中。
[PackageName]_LIBRARIES 或 [PackageName]_LIBS: 库文件列表,用来链接你的项目和依赖库。
[PackageName]_DEFINITIONS: 编译器定义列表,需要添加到你的编译器命令行中去,以便使用库。
Pkg-config
pkgconfig需求的是一个pc文件,我们可以查找库的pc文件,同上面的方法
1 | ╰─ dpkg -L libopencv-dev | grep 'pc' |
这里找打了opencv4这个名字,需要写到pkg_check_modules的第三个参数
下面是一个CMakeLists.txt例子
1 | # CMakeLists.txt |
v1.5.2