Cmake学习笔记(四)find类指令 以FIND

编程入门 行业动态 更新时间:2024-10-25 06:24:26

Cmake学习笔记(四)find类<a href=https://www.elefans.com/category/jswz/34/1769074.html style=指令 以FIND"/>

Cmake学习笔记(四)find类指令 以FIND

Cmake Find类指令

以FIND_PACKAGE()为例,我们用OpenCV为实例来看

我们需要为工程设置依赖的头文件和库时,往往需要以下方法

include_directiories(../include)
target_link_libraries(proTest ../OpenCV)

但是,opencv需要以来的动态库有时非常多,那我们一个个路径来配置么,肯定会比较麻烦,这时就会需要FIND_PACKAGE。先看实际应用怎么写,我们

set(OpenCV_DIR "D:\\opencv\\opencv\\build\\x86\\vc12\\lib\\")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(curltest ${OpenCV_LIBRARY})

首先设置opencv的安装路径,紧接着,通过find_package来自动查找,包含的动态库和头文件所需信息,注意OpenCV是cmake预置变量,内部客人,在linux下一定注意大小写。

Cmake会根据你配置的路径,文件夹中去OpenCVConfig.cmake,OpenCV-config.cmake 两个文件,进而确定你要引入的opencv头文件和库函数在哪里

对OpenCV还有一些有些变量,对编写CmakeList有用,必如OpenCV_FOUND可以用来标记是否找到响应文件和信息。
那我们CmakeList就可以改写成

project(HELLO)
set(SRC_LIST CmakeHelloWord.cpp)
#set (CMAKE_PREFIX_PATH "D:\\QT\\5.8\\msvc2015\\")add_executable(hello ${SRC_LIST})set(OpenCV_DIR "D:\\opencv\\opencv\\build\\x86\\vc12\\lib\\")
find_package(OpenCV REQUIRED)
if(OpenCV_FOUND)
MESSAGE(STATUS "OpenCV_VERSION: ${OpenCV_VERSION}")
MESSAGE(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(curltest ${OpenCV_LIBS})
else(OpenCV_FOUND)
message(FATAL_ERROR "OpenCV not found!")
endif(OpenCV_FOUND)

据说并不是所有的,预置变量都是_INCLUDE_DIRS 和 _LIBS,据说会有如下形式,待验证

  • (name)_FOUND
  • (name)_INCLUDE_DIR 或 (name)_INCLUDES
  • (name)_LIBRARY 或 (name)_LIBRARIES 或 (name)_LIBS
  • (name)_DEFINITIONS

更多推荐

Cmake学习笔记(四)find类指令 以FIND

本文发布于:2024-02-12 15:58:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1688443.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:指令   学习笔记   Cmake   FIND   find

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!