find_package 主要用于查找指定的 package,主要支持两种搜索方法:
- Config mode:查找 xxx-config.cmake或 xxxConfig.cmake的文件,如OpenCV库的OpenCVConfig.cmake
- Module mode:查找Findxxx.cmake文件,如OpenCV库中的FindCUDA.cmake
详细的find_package介绍参考链接:find_package详解
目录
一、检索模式
find_package 有两种检索模式,这两种模式存在优先级,如果其中一种检索模式没有找到所需模块,就会启用另一种模式。
不同模式下,find_package 使用的检索路径也会有所不同。
1、Config mode(配置模式)
该模式下查找的是 <lowercasePackageName>-config.cmake 或 <PackageName>Config.cmake的文件。xxx-config.cmake 文件一般是小写开头,XXXConfig.cmake 文件一般是大写开头。
cmake 通过 CMAKE_PREFIX_PATH 设置配置模式的搜索路径:
# CMAKE_PREFIX_PATH 是配置模式的搜索路径
# 方式一
set(CMAKE_PREFIX_PATH 搜索路径)
# 方式二
list(APPEND CMAKE_PREFIX_PATH 搜索路径)
2、Module mode(模块模式)
该模式下查找的是

find_package在CMake中用于查找和加载第三方库,支持Configmode和Modulemode两种搜索方式。Configmode查找xxx-config.cmake或XXXConfig.cmake,Modulemode查找Findxxx.cmake。搜索路径可通过CMAKE_PREFIX_PATH和CMAKE_MODULE_PATH设置。find_package的签名格式包含版本、组件等选项,并设置Package_FOUND变量指示是否找到库。找到库后,可以使用包括头文件目录和库文件在内的内置变量。
最低0.47元/天 解锁文章

1609





