find_library

find_library

速记签名为:

find_library (<VAR> name1 [path1 path2 ...])

一般签名为:

find_library ( <VAR>

name | NAMES name1 [name2 ...] [NAMES_PER_DIR]

[HINTS [path | ENV var]... ]

[PATHS [path | ENV var]... ]

[REGISTRY_VIEW (64|32|64_32|32_64|HOST|TARGET|BOTH)]

[PATH_SUFFIXES suffix1 [suffix2 ...]]

[VALIDATOR function]

[DOC "cache documentation string"]

[NO_CACHE]

[REQUIRED]

[NO_DEFAULT_PATH]

[NO_PACKAGE_ROOT_PATH]

[NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [NO_SYSTEM_ENVIRONMENT_PATH] [NO_CMAKE_SYSTEM_PATH] [NO_CMAKE_INSTALL_PREFIX] [CMAKE_FIND_ROOT_PATH_BOTH | ONLY_CMAKE_FIND_ROOT_PATH | NO_CMAKE_FIND_ROOT_PATH] )

此命令用于查找库。 一个名称为的缓存条目或普通变量(如果指定NO_CACHE)用于存储此命令的结果。 如果找到库,则结果存储在变量中;除非清除变量,否则不会重复搜索。 如果未找到任何内容,则结果将为-NOTFOUND

选项包括:

NAMES

为库指定一个或多个可能的名称。

使用此选项指定带和不带版本后缀的名称时,我们建议先指定未带版本的名称,这样本地构建的软件包就可以先于发行版被找到。

HINTS,PATHS

指定除默认位置外要搜索的目录。 子选项 ENV var 从系统环境变量中读取路径。

REGISTRY_VIEW

在 3.24 版本中添加的。

指定必须查询的注册表视图。

此选项仅在windows平台上有意义,在其他平台上将被忽略。

PATH_SUFFIXES

指定在每个常规目录下要检查的附加子目录

VALIDATOR

在 3.25 版本中添加。指定要为找到的每个候选项调用 (无法提供 a,否则会导致错误)。 两个参数将传递给 validator 函数:一个 result 变量和候选项的绝对路径。项目 将被接受,并且搜索将结束,除非该函数将 value 的值设置为调用范围中的 false。结果 变量将保持 true 值。function(my_check validator_result_var item) if(NOT item MATCHES ...) set(${validator_result_var} FALSE PARENT_SCOPE) endif()endfunction()find_library (result NAMES ... VALIDATOR my_check)请注意,如果使用缓存的结果,则会跳过搜索并忽略 any。缓存的结果不需要传递 验证函数。VALIDATOR

DOC

指定缓存条目的文档字符串。

NO_CACHE

在 3.21 版本中添加。

搜索结果将存储在普通变量中,而不是缓存条目。

注意 如果变量在调用之前已经设置(作为普通或缓存变量),则不会进行搜索。

警告 应谨慎使用此选项,因为它可能会大大增加重复配置步骤的成本。

REQUIRED

在 3.18 版本中添加。

如果未找到任何内容,则停止处理并显示错误消息,否则下次调用 find_library 时,将再次尝试搜索同一个变量。

如果指定 NO_DEFAULT_PATH,则不会搜索额外的路径。 如果未指定NO_DEFAULT_PATH,则搜索过程如下:

  1. 如果在 find 模块或其他通过调用 find_package( ) 加载的脚本中调用,则搜索当前正在查找的包所独有的前缀。请参见策略 CMP0074。

在 3.12 版本中添加。

具体来说,按照以下变量的顺序搜索指定的路径:

a. <PackageName>_ROOT CMake变量,其中<PackageName>是保留大小写的包名。
b. <PACKAGENAME>_ROOT  CMake变量,其中<PACKAGENAME>是大写的包名。参见策略CMP0144。
在版本3.27中添加。
c. <PackageName>_ROOT 环境变量,其中<PackageName>是保留大小写的包名。
d. <PACKAGENAME>_ROOT 环境变量,其中<PACKAGENAME>是大写的包名。参见策略CMP0144。

在 3.27 版本中添加。

包根变量被维护为一个堆栈,所以如果从嵌套的查找模块或配置包中调用,将先搜索当前模块或包的根路径,然后搜索父级查找模块或配置包的根路径。换句话说,搜索顺序将是:_ROOT, ENV{_ROOT}, _ROOT, ENV{_ROOT},,依此类推。如果传递了NO_PACKAGE_ROOT_PATH或者将CMAKE_FIND_USE_PACKAGE_ROOT_PATH设置为FALSE,这个搜索步骤可以被跳过。

  1. 搜索在cmake特定的缓存变量中指定的路径。这些变量旨在与命令行中的 -DVAR=value 一起使用。这些值被解释为分号分隔的列表。如果传递了NO_CMAKE_PATH或者将CMAKE_FIND_USE_CMAKE_PATH设置为FALSE,这个搜索步骤可以被跳过。
  • /lib/

 if CMAKE_LIBRARY_ARCHITECTURE is set, and /lib for each  in CMAKE_PREFIX_PATH

  • CMAKE_LIBRARY_PATH
  • CMAKE_FRAMEWORK_PATH
  1. 搜索在cmake特有的环境变量中指定的路径。这些变量旨在在用户的shell配置中设置,因此使用宿主机的原生路径分隔符(在Windows上是;,在UNIX上是:)。如果传递了NO_CMAKE_ENVIRONMENT_PATH或者将CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH设置为FALSE,这个搜索步骤可以被跳过。
  • /lib/

 if CMAKE_LIBRARY_ARCHITECTURE is set, and /lib for each  in CMAKE_PREFIX_PATH

  • CMAKE_LIBRARY_PATH
  • CMAKE_FRAMEWORK_PATH
  1. 搜索由HINTS选项指定的路径。这些路径应该是通过系统自省计算出来的,比如由已经找到的其他项的位置提供的提示。硬编码的可能路径应该使用PATHS选项指定。
  2. 搜索标准的系统环境变量。如果传递了NO_SYSTEM_ENVIRONMENT_PATH或者将CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH设置为FALSE,这个搜索步骤可以被跳过。

环境变量 LIB 和 PATH 中的目录

  1. 搜索在当前系统的平台文件中定义的cmake变量。如果传递了NO_CMAKE_INSTALL_PREFIX或者将CMAKE_FIND_USE_INSTALL_PREFIX设置为FALSE,可以跳过对CMAKE_INSTALL_PREFIX和CMAKE_STAGING_PREFIX的搜索。如果传递了NO_CMAKE_SYSTEM_PATH或者将CMAKE_FIND_USE_CMAKE_SYSTEM_PATH设置为FALSE,可以跳过所有这些位置的搜索。

这些变量包含的平台路径通常是包括已安装软件的位置。例如,对于基于UNIX的平台,一个典型的路径是/usr/local。

  1. 搜索由PATHS选项指定的路径,或者在命令的简写版本中指定的路径。这些通常是硬编码的可能路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值