目录

1、find_path

2、find_library

3、find_program


find_path 参考文章CMake中find_path的使用-CSDN博客

find_library 参考文章:CMake中find_library的使用

1、find_path

find_path 一般用于在某个目录查找一个或者多个头文件命令执行结果保存到 <VAR> 中。同时命令执行结果也会默认缓存到 CMakeCache.txt 中。

(1) 格式

find_path格式如下

find_path (
          <VAR>
          NAMES name1 [name2 ...] 
          [HINTS [path | ENV var]... ]
          [PATHS [path | ENV var]... ]
          [NO_CACHE]
          [REQUIRED]
)

选项解析

执行结果:

        查找成功时,会向变量<VAR&gt;中添加成功找到头文件目录,如果在某个路径下查找多个头文件,只要查找多个头文件中的某一个,也算执行成功。

注意:

        虽然HINTS / PATHS后面可以跟多条路径,但是每次只会向变量中<VAR&gt;添加一个目录,那就是成功找到头文件目录

(2) 举例

一条指定路径下查找头文件

unset(INCLUDE_DIR CACHE)    # 清除之前的缓存
find_path(INCLUDE_DIR       # 在指定路径下查找 gather.h
    NAMES gather.h
    # 虽然有多条路径,但只会把含当前头文件目录加入到 INCLUDE_DIR 中
    HINTS ${PROJECT_SOURCE_DIR}/vac/util ${PROJECT_SOURCE_DIR}/app1
)
message("${INCLUDE_DIR}")

在多条路径下查找头文件

unset(INCLUDE_DIR CACHE)    # 清除变量 INCLUDE_DIR 之前的缓存
find_path(INCLUDE_DIR 
    NAMES gather.h
    HINTS ${PROJECT_SOURCE_DIR}/vac/util ${PROJECT_SOURCE_DIR}/app1
)
list(APPEND ADD_INCLUDE_DIR ${INCLUDE_DIR})    # 以追加方式添加到 ADD_INCLUDE_DIR 
message("${INCLUDE_DIR}")

unset(INCLUDE_DIR CACHE)    # 清除变量 INCLUDE_DIR 之前的缓存
find_path(INCLUDE_DIR 
    NAMES mul.h
    HINTS ${PROJECT_SOURCE_DIR}/vac/util ${PROJECT_SOURCE_DIR}/app1
)
list(APPEND ADD_INCLUDE_DIR ${INCLUDE_DIR})    # 以追加的方式添加到 ADD_INCLUDE_DIR 
message("${INCLUDE_DIR}")

message("${ADD_INCLUDE_DIR}")

2、find_library

find_library 一般直接去查找依赖文件,和find_package 不一样,find_package 找的是 .cmake 文件,而find_library 直接找 .so 或者 .a 文件

find_path 一样,命令执行结果会默认缓存到 CMakeCache.txt 中。

(1) 格式

相关选项解析可以参考 find_path

find_library (
          <LIBRARY_NAME>
          NAMES name1 [name2 ...] 
          [NAMES_PER_DIR]
          [HINTS [path | ENV var]... ]
          [PATHS [path | ENV var]... ]
          [NO_CACHE]
          [REQUIRED]
)

 选项解析

执行结果:

        查找成功时,会向变量<LIBRARY_NAME>中添加成功找到头文件的库文件包含完整路径),如果在某个路径下查找多个头文件,只要查找到多个头文件中的某一个,也算执行成功。

注意:

          虽然HINTS / PATHS后面可以跟多条路径,但是每次只会向变量中<VAR>添加一个目录,那就是成功找到头文件目录

(2) 举例

查找一个或者多个路径也可以参考 find_path

unset(LIBS CACHE)           # 清空变量LIB_DIR 
find_library(LIBS
    NAMES libopencv_core.so    # 前缀+库名+后缀
    HINTS /home/gzx/toolchain/opencv-3.4.10/build/lib
)
message("${LIBS}")    # /home/gzx/toolchain/opencv-3.4.10/build/lib/libopencv_core.so

unset(LIBS CACHE)          # 清空变量LIB_DIR
find_library(LIBS
    NAMES opencv_highgui      # 只有库名
    HINTS /home/gzx/toolchain/opencv-3.4.10/build/lib
)
message("${LIBS}")    # /home/gzx/toolchain/opencv-3.4.10/build/lib/libopencv_highgui.so

3、find_program

find_program 一般用于查找指定名称可执行文件相关内容可以参考find_path 或者 find_library

find_program (
          <VAR>
          name | NAMES name1 [name2 ...] 
          [NAMES_PER_DIR]
          [HINTS [path | ENV var]... ]
          [PATHS [path | ENV var]... ]
          [NO_CACHE]
          [REQUIRED]
)

原文地址:https://blog.csdn.net/challenglistic/article/details/130169830

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_30290.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注