find_path 参考文章:CMake中find_path的使用-CSDN博客
find_library 参考文章:CMake中find_library的使用
1、find_path
find_path 一般用于在某个目录下查找一个或者多个头文件,命令的执行结果会保存到 <VAR> 中。同时命令的执行结果也会默认缓存到 CMakeCache.txt 中。
(1) 格式
find_path (
<VAR>
NAMES name1 [name2 ...]
[HINTS [path | ENV var]... ]
[PATHS [path | ENV var]... ]
[NO_CACHE]
[REQUIRED]
)
- <VAR>:用于保存命令的执行结果
- NAMES:要查找的头文件
- HINTS | PATHS
- NO_CACHE:搜索结果将存储在普通变量中而不是缓存条目(即CMakeCache.txt)中
- REQUIRED:如果没有找到指定头文件,就出发错误提示,变量会设为 <VAR>-NOTFOUND
执行结果:
查找成功时,会向变量<VAR>中添加成功找到头文件的目录,如果在某个路径下查找多个头文件,只要查找到多个头文件中的某一个,也算执行成功。
注意:
虽然HINTS / PATHS后面可以跟多条路径,但是每次只会向变量中<VAR>添加一个目录,那就是成功找到头文件的目录。
(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_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) 举例
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进行投诉反馈,一经查实,立即删除!