CMake语法-find_package-查找库-pkg_check_modules-外部库信息-find_path-查找路径-find_library-查找库

这篇具有很好参考价值的文章主要介绍了CMake语法-find_package-查找库-pkg_check_modules-外部库信息-find_path-查找路径-find_library-查找库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.find_package-查找库

find_package 是 CMake 中的一个命令,用于在构建系统中查找和引入第三方库。当你在项目中使用了某个外部库(如 Boost、Eigen、OpenCV 等)时,可以利用 find_package 命令来查找并配置这些库的路径和其他相关设置。

基本语法如下:

find_package(package_name [version] [REQUIRED] [QUIET] [COMPONENTS component1 ...])
  • package_name: 要查找的包的名称。
  • version: (可选)指定要查找的包的版本,例如 “3.1.2”。
  • REQUIRED: (可选)如果指定此选项,且未找到指定的包,CMake 进程将报错并停止。
  • QUIET: (可选)静默模式,不输出查找过程信息。
  • COMPONENTS: (可选)某些包可能包含多个组件或模块,通过这个选项可以指定需要查找哪些组件。

一旦 find_package 成功找到所需的包,它通常会定义一些变量(如 <package>_FOUND,以及 <package>_INCLUDE_DIRS<package>_LIBRARIES 等),这样你就可以在 CMakeLists.txt 文件中正确链接和包含相应的头文件和库文件。

例如:

find_package(Boost REQUIRED COMPONENTS system filesystem)
if (Boost_FOUND)
  include_directories(${Boost_INCLUDE_DIRS})
  target_link_libraries(my_target ${Boost_LIBRARIES})
endif()

在这个例子中,CMake 将尝试查找并配置 Boost 库,并且需要其中的 system 和 filesystem 组件。如果成功找到,就将 Boost 的头文件目录添加到 include 目录,并将需要的库链接到目标 my_target。

find_package 工作原理概括如下:

  1. 搜索顺序文章来源地址https://www.toymoban.com/news/detail-845307.html

    • 首先,CMake 会在预定义的一系列路径(包括系统默认路径、环境变量指定路径以及用户自定义路径等)中查找名为 <package>Config.cmake<lowercase-package>-config.cmake

到了这里,关于CMake语法-find_package-查找库-pkg_check_modules-外部库信息-find_path-查找路径-find_library-查找库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package)

    在ros中catkin_make功能包时遇到以下错误 解决办法: 终端下执行

    2024年02月12日
    浏览(47)
  • CMake Error at CMakeLists.txt: (FIND_PACKAGE)找不到ncnn包的解决方法

    demo指路:https://github.com/EdVince/Stable-Diffusion-NCNN 在 Linux端 使用 cmake 编译文件时, 执行 cmake .. 命令,报错: 拉取 ncnn 的代码库(包括submodule)后没有 build and Install ,所以 cmake 时找不到对应的包,只需要让它找到对应的包即可,分为2步: 生成对应的cmake文件( ncnnConfig.cmake

    2024年02月11日
    浏览(180)
  • CMake Error at CMakeLists.txt:5 (find_package):By not providing “FindOpenCV.cmake“ in CMAKE_MODULE

    CMake Error at CMakeLists.txt:5 (find_package): By not providing \\\"FindOpenCV.cmake\\\" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by \\\"OpenCV\\\", but CMake did not find one.  CMake Error at CMakeLists.txt:5 (find_package): By not providing \\\"FindOpenCV.cmake\\\" in CMAKE_MODULE_PATH this project has asked CMake to

    2024年04月27日
    浏览(42)
  • 解决执行find_package(PCL, ...时遇到CMakeFindDependencyMacro.cmake里find_dependency(Qt5WebKit 5.212.0 EXACT报错

    写的CMakeLists.txt里有这么一句: find_package(PCL 1.8 REQUIRED COMPONENTS common io visualization) 在执行cmake 命令时报下面的错: CMake Error at /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package):   Found package configuration file:     /root/anaconda3/lib/cmake/Qt5WebKit/Qt5WebKitConfig.cmake   but it set Qt5

    2024年01月24日
    浏览(41)
  • 20230822 Windows上使用find_package引入OpenCV报错

    打开Cmake项目时,find_package 报错: 大概率原项目是在 Linux 上开发的,Linux 上安装的 OpenCV 默认添加到了系统环境里,所以可以直接使用,但是 Windows 上的系统环境变量里没有OpenCV导致的 有两种解决方案 1. 将 OpenCV 添加到系统环境变量中 将 OpenCV 添加到系统环境变量里,这样

    2024年02月11日
    浏览(39)
  • 【cmake】pkg_check_modules 使用详解

    pkg_check_modules 主要通过 .pc 文件引入整个库,该命令会解析指定的 .pc 文件,并将所需的编译和链接信息提取到 CMake 变量中,以便后续使用。 目录 1、pkg_check_modules 的检索目录 2、pkg_check_modules 语法格式 3、应用:pkg_check_modules 引入 libavfilter.pc  3.1 使用 IMPORTED_TARGETS 3.2 不使用

    2024年04月14日
    浏览(36)
  • halide package cmake的设置方式

    1 先找一个例程。里面用到halide。 这时会提示找不到package。 按照那个提示做就行。 2 把提前下载好的halide放到一个位置 3 然后设置一下那个Halide_DIR就可以了 这种方法有个问题 就是不能找halide依赖的库,ZLIB,PNG,JPEG。 解决方法是 直接在那个cmake_prefix_path 里面多加上这一句

    2024年02月21日
    浏览(32)
  • go cannot find package “github.com/gorilla/websocket“解读

    在Go开发过程中,我们经常会依赖第三方库来简化开发工作。而使用 go get 命令安装这些库时,有时候我们可能会遇到类似于以下错误的情况: 这个错误意味着Go编译器无法找到名为\\\"github.com/gorilla/websocket\\\"的包。那么我们应该如何解决这个问题呢?下面提供了几种常见的解决方

    2024年01月24日
    浏览(91)
  • By not providing “Findncnn.cmake“ in CMAKE_MODULE_PATH this project has asked CMake to find

    as报错: By not providing “Findncnn.cmake” in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by “ncnn”, but CMake did not find one. 首先要下载导入,文件名称要与cmake文件对应正确 如果还是报这个错误 as问题,只需要删除 grade同步一下,然后再撤销删除grade同步就

    2024年02月11日
    浏览(40)
  • 基本语法和 package 与 jar

    3.基本语法 1.输入输出 2.类型 字符类型 char String 字符值:单引号里必须有一个字符 字符传值:双引号里可以有零个、一个、多个字符 数字类型 类型名 说明 数字范围 类型后缀 byte 整数类型,用1个字节表示 [-2 7,2 7) 即 [-128,128) short 整数类型,用2个字节表示 [-2 15,2 15) int 整数

    2024年01月25日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包