FindOpenCV.cmake和OpenCVConfig.cmake之间的区别

时间:2017-07-21 20:46:45

标签: cmake

首先是

pkg_search_module()查找以扩展名.pc

结尾的包配置文件
pkg_search_module(some_name REQURED package) 

在PKG_CONFIG_PATH

中查找package.pc

然后是find_package()

这还有三个版本。一个

set(Package_DIR "/path/")
find_package(Package REQUIRED)

和其他

find_package(Package HINTS "/path" REQUIRED)

和第三个

list(APPEND CMAKE_PREFIX_PATH "/path/)
find_package(Package REQUIRED)

全部查找PackageConfig.cmake或package-config.cmake

然后是FindPackage.cmake。

所有这些都返回库,包含,找到变量等......

  1. cmake中的哪个命令查找FindPackage.cmake?

  2. 我是否正确理解了这个概念?

  3. 为什么会出现这种复杂情况?

1 个答案:

答案 0 :(得分:0)

我正在回答有关linux用户的问题。也许其他人可以在以后再投光。

find_package有两种方法可以找到库并包含目录。默认值为Find<套餐> .cmake。如果没有发现,搜索将回落到<包> Config.cmake。

默认搜索位置为

 <prefix>/(lib/<arch>|lib|share)/cmake/<name>*\/          
 <prefix>/(lib/<arch>|lib|share)/<name>*\/                
 <prefix>/(lib/<arch>|lib|share)/<name>*\/(cmake|CMake)/  

&LT;前缀&gt;是CMAKE_PREFIX_PATH - 如果Package cmakes不在上述默认路径中,则设置的路径。默认&lt;前缀&gt; path是CMAKE_SYSTEM_PREFIX_PATH

MODULE

查找与LT;包&gt; .cmake。

set ( <Package>_ROOT /path/)
find_package(<Package> COMPONENTS lib1 lib2 REQUIRED)
find_package(<Package>)

CONFIG

&LT;包&gt; Config.cmake

set(CMAKE_PREFIX_PATH /path/)
find_package(<Package> CONFIG REQUIRED)
find_package(<Package> REQUIRED)

相关变量存储在

<Package>_FOUND; <Package>_INCLUDE_DIRS; <Package>_LIBRARY_DIR, <Package>_LIBRARIES