首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何设置CMakeLists.txt以在非默认路径中查找.PC文件(带有pkg_search_module的pkg-config)?

要在非默认路径中查找 .PC 文件,可以通过设置 CMakeLists.txt 文件来实现。下面是一种设置方式:

  1. 首先,在 CMakeLists.txt 文件的开头,添加以下代码,定义需要查找的路径:
代码语言:txt
复制
set(CMAKE_PREFIX_PATH "/path/to/custom/dir1;/path/to/custom/dir2")

其中,/path/to/custom/dir1/path/to/custom/dir2 是需要自定义的路径,用于搜索 .PC 文件。

  1. 然后,在需要使用 pkg-config 进行依赖检查的地方,使用 pkg_search_module 函数来查找依赖:
代码语言:txt
复制
find_package(PkgConfig REQUIRED)
pkg_search_module(MY_LIBRARY REQUIRED my_library)

其中,MY_LIBRARY 是依赖的名称,my_library 是需要查找的 .PC 文件的名称。

  1. 最后,将找到的依赖链接到目标中:
代码语言:txt
复制
target_link_libraries(your_target ${MY_LIBRARY_LIBRARIES})

上述代码中,your_target 是你的目标名称,${MY_LIBRARY_LIBRARIES} 是找到的依赖库的变量。

这样,当使用 cmake 构建项目时,CMake 将在自定义的路径中查找 .PC 文件,并将找到的依赖链接到你的目标中。

注意:需要保证自定义的路径中包含正确的 .PC 文件,并且 .PC 文件中包含了正确的依赖信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CMake 秘籍(二)

本章,我们将讨论必要工具并发现 CMake 命令查找家族: find_file来查找一个指定文件完整路径 find_library来查找一个库 find_package来查找并加载来自外部项目的设置...在这种情况下,我们有两个选择: 依赖pkg-config实用程序来发现系统上包。这依赖于包供应商.pc配置文件中分发有关其包元数据。...函数来搜索任何带有包配置.pc文件库或程序。...工作原理 一旦找到pkg-config,CMake 将提供两个函数来封装这个程序提供功能: pkg_check_modules,用于传递列表查找所有模块(库和/或程序) pkg_search_module...本配方补充了之前配方,检测外部库:I. 使用 pkg-config。我们将展示如何编写一个基本查找模块来定位系统上 ZeroMQ 消息库,以便在 Unix 操作系统上进行库检测。

58720

【Linux】《how linux work》第十六章 从 C 源代码编译软件入门

它们带有一个脚本或配置文件(如 configure 或 CMakeLists.txt),帮助根据您系统设置和配置选项从 Makefile.in 生成 Makefile。...你可以修改这个文件,例如,通过在库标志添加-Wl,-rpath=${libdir}来设置运行时动态链接器路径。然而,更重要问题是pkg-config如何首次找到.pc文件。...默认情况下,pkg-config在其装前缀lib/pkgconfig目录查找。...不幸是,默认情况下,pkg-config不会读取安装前缀之外任何.pc文件。...从实际.pc文件创建符号链接(或复制)到中央pkgconfig目录。设置PKG_CONFIG_PATH环境变量包括任何额外pkgconfig目录。这种策略系统范围内效果不佳。

9710
  • Ubuntu 18.04安装OpenCV4.0和环境配置

    命令说明: -D OPENCV_GENERATE_PKGCONFIG=YES:OpenCV4以上版本默认不使用pkg-config,该编译选项开启生成opencv4.pc文件,支持pkg-config功能...3 OpenCV配置环境 3.1 pkg-config环境 配置OpenCV pgk-config环境 找到opencv4.pc文件: $ sudo find / -iname opencv4.pc...$ sudo vim /etc/ld.so.conf.d/opencv4.conf 文件(可能是空文件)末尾加上: /usr/local/opencv4/lib 再执行以下命令使刚才配置路径生效:...文件名为opencv4.pc,所以需要对当前目录下Malefile文件进行修改: $ vim Makefile 修改后内容为: CXX ?...4.2 通过Cmake测试 因为我们更改了opencv安装路径(/usr/local/opencv4),所以测试前我们需要在CMakeLists.txt文件14行find_package(OpenCV

    4K22

    WebAssembly实战-浏览器中使用ImageMagick

    使用可以写一本书,本次我们主要关注生成静态库、查找依赖、查找文件配置。...CPPFLAG :预编译参数,预编译主要涉及头文件查找,因此我们要把之前编译几个库文件路径添加进去。...PKG_CHECK_MODULES() 调用 pkg-config 工具查找格式为 *.pc 配置文件,从中获取组件信息。我们可以看到,zlib,libpng 等下面都有生成 *.pc 文件。...因此我们只要给 pkg-config 指定搜索路径就可以了,指定搜索路径方式是添加参数 PKG_CONFIG_PATH。...MEMFS 是在内存建立虚拟文件系统。IDBFS 是基于 IndexDB 虚拟文件系统。胶水 js wasm-im.js 同样包含了对虚拟文件系统封装,默认使用 MEMFS。

    7.1K42

    CMake 秘籍(六)

    我们还展示了如何从相同文件构建静态和共享库。本章,我们将更深入地讨论并正式化安装时发生事情。...但是,设置动态共享对象RPATH时应该选择哪个路径?我们需要确保无论是构建树还是安装树运行可执行文件,它总是能找到正确共享库。...这是通过为hello-world_wDSO目标设置RPATH相关属性来实现,以便查找相对于可执行文件本身位置路径,无论是通过$ORIGIN( GNU/Linux 上)还是@loader_path(... Linux 上使用 ldd 工具,我们可以检查构建树 hello-world_wDSO 可执行文件查看加载器将在哪里查找 libmessage.so: libmessage.so.1 =>...该文件将包含我们导出目标。我们还添加了一个测试,检查项目的安装和导出是否按预期工作。 如何操作 再次,根CMakeLists.txt文件与前一个食谱相比未更改。

    36800

    pkg-config 用法

    进行使用fuse 2.9写程序时候,遇到了pkg-config 命令和 .pc 文件。本篇博客就具体说明一下pkg-config 命令是什么?...pkg-config命令是通过查询XXX.pc文件而知道这些。我们所需要做是,写一个属于自己.pc文件。         但pkg-config又是如何找到所需.pc文件呢?...这环境变量写明.pc文件路径pkg-config命令会读取这个环境变量内容,这样就知道pc文件了。 查看 环境变量 ?         ...但如果有多个.pc文件,那么pkg-config又怎么能正确找到我想要那个呢?这就需要我们使用pkg-config命令时候去指定。...比如$gcc main.c `pkg-config --cflags --libs gtk+-2.0` -o main就指定了要查找.pc文件是gtk+-2.0.pc

    2K20

    Linux下使用自定义路径来运行OpenCV

    我之前写过一篇Linux下编译OpenCV博客,大家可以参考下,我这里只记录与其中不同部分。...修改lib和include,增加OpenCV目录 为了在编译时候找到我们OpenCV,需要修改lib和include路径,把OpenCV目录加到里面去。...修改PKG_CONFIG_PATH环境变量 这个环境变量是给pkg-config这个工具增加额外查找目录pkg-config默认查找/usr/lib/pkgconfig和/usr/share/pkgconfig...下.pc配置文件,额外目录通过设置PKG_CONFIG_PATH来增加。...我们这里将自己OpenCV放进去,即可: export PKG_CONFIG_PATH=/home/username/local:$PKG_CONFIG_PATH 检查设置是否正确 如何验证编译别的库时候找到是我们编译

    2.3K10

    cmake学习

    /可执行文件 #运行可执行文件 CMakeLists.txt通用设置: (1)cmake版本号 (2)工程名称 # $ cmake --version cmake_minimum_required...多个cpp文件 + 头文件 cmake思路 过程: cpp文件生成可执行文件 可执行文件链接头文件 #创建一个带有所有cpp文件链接源变量编译 set(SOURCES src/Hello.cpp...src/main.cpp ) #SOURCES变量设置特定文件另一种方法是使用GLOB命令使用通配符模式匹配来查找文件。...函数使编译器意识到它们 最后g++编译过程,会自动链接到头文件路径 target_include_directories(hello_headers PRIVATE ${PROJECT_SOURCE_DIR...用户看了头文件就知道如何使用静态库文件了,即如何使用函数。 因此最后只需要将main.c、head.h和库文件给用户即可。

    2K90

    面向 C++ 现代 CMake 教程(三)

    搜索将从存储CMAKE_MODULE_PATH变量路径开始(默认情况下这个变量是空)。当项目想要添加和使用外部查找模块时,这个变量可以被项目配置。...换句话说,它实现了以下功能: 查找库和编译器所在位置 提供辅助函数,教会 CMake 如何调用.proto文件定制编译器 添加包含包含和链接所需路径变量 大多数情况下,当你调用...尽管 PkgConfig 极其易于使用,但其功能却相当有限: 检查系统是否存在库,并且是否提供了与之一起.pc文件 检查是否有一个库足够新版本可用 通过运行pkg-config --...,您构建系统需要在操作系统中找到pkg-config可执行文件,运行它几次,并提供适当参数,然后将响应存储变量,以便稍后传递给编译器。... CMake 我们已经知道如何做到这一点——扫描已知存储辅助工具路径检查是否安装了 PkgConfig,然后使用几个exec_program()命令来发现如何链接依赖项。

    54700

    Linux编译安装安Python3.73.8出现_ssl模块错误| python运行ssl模块出现ModuleNotFoundError

    大多数程序和库在编译时默认优化级别是”2″(使用”-O2″选项)并且带有调试符号来编 译,也就是 CFLAGS=”-O2 -g”,....PKG_CONFIG_PATH:它指定pkg-config将在其中搜索其.pc文件其他路径。此变量用于增强pkg-config默认搜索路径。...但是,某些本地模块可能安装在不同前缀,例如/usr/local。在这种情况下,必须预先设置搜索路径,以便pkg-config可以找到.pc文件。...pkg-config程序用于检索有关系统已安装库信息。 pkg-config主要用途是提供编译程序和链接到库必要细节。此元数据存储pkg-config文件。...这些文件具有后缀.pc,并位于pkg-config工具已知特定位置。

    8.1K41

    Linux动态库管理:pkg-config

    引言 之前文章,我们探讨了如何添加自定义动态库路径、查看现有动态库目录以及一些实用技巧。...本文章将专注于pkg-config这一方面,这是一个用于管理库文件、头文件和编译选项工具,经常出现在动态库使用场景。...pkg-config简介 pkg-config是一个用来帮助我们添加编译时和链接时标志工具。当我们开发使用某个库应用程序时,通常需要指定这个库文件和库文件路径。...pkg-config配置文件路径 通常,pkg-config配置文件(.pc文件)存放在/usr/lib/pkgconfig、/usr/share/pkgconfig或/usr/local/lib...动态库开发,可以为库创建一个.pc文件,并将其放入pkgconfig目录

    2.3K70

    基于EasyNVR摄像机无插件直播流媒体服务器实现文字滤镜处理功能

    从ffbuild/config.log 中看到是pk-config这个工具查找一个*.pc文件,比如freetype就查找是freetype2.pc这个文件。 ?...从命令行模式进入到/usr/lib/和/usr/local/lib/下,查找是否有一个pkgconfig文件夹,找到后,看是否有需要哪个后缀名为pc文件,如下图所 ?...存在查找pc 问题解决: 1)执行export命令把这个路径export出来: export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig.../ 注意上述命令是/usr/local/lib/pkgconfig,这个每个人路径都不相同,不能设置错了。...=/usr/local/进行指定目录,一般默认即可 4)查询下编译ffmpeg是否包含freetype功能模块 ?

    65820

    CMake用法,这篇文章讲全了

    文件 假设工程只有main.cpp一个文件文件布局如下: . ├── CMakeLists.txt └── main.cpp 那么该如何使用书写其CMakeLists文件呢,如下为一个简单CMakeLists.txt...main.cpp文件夹中使用func文件提供add方法,文件夹布局如下: ├── CMakeLists.txt ├── func.h ├── func.cpp └── main.cpp 其CMakeLists.txt...# 在当前目录查找文件,并将它们添加到SOURCES变量 aux_source_directory(....引用第三方库(静态库) 实际开发,往往需要依赖外部库。静态库为例,考虑引入其他同事提供库func.lib,其配套文件为func.h,同时,生成动态库名称为BirdEngine。...总结 本文结合实际场景讲解CMakeLists.txt文件组织,包括单文件、多文件、多文件夹项目构建,以及如何灵活地集成和管理第三方库。

    16510

    Android NDK开发基础

    (libPath); } } 二、NDK编译基础 NDK支持编译方式有两种: (1)CMake:NDK默认构建工具,可在CMakeLists.txt 构建脚本配置编译选项,CMakeC+...(2)ndk-build:可在Android.mk 和 Application.mk文件配置编译选项,ndk-buildC++运行时默认值为none,ndk-build默认停用C++异常,默认停用...2.1.1 CMake构建脚本 CMakeLists.txt是CMake构建脚本,CMakeLists.txt可以使用cmake一些命令来自定义构建过程,以下列举了一些常用cmake命令: #...CPU 与指令集每种组合都有专属应用二进制接口 (ABI)。CPU 与指令集每种组合都有专属应用二进制接口 (ABI)。 默认情况下,Gradle会针对所有弃用ABI进行构建。...要限制应用支持ABI集,可以build.gradle设置以下配置: android { defaultConfig { ndk { // 限定编译

    1.9K21

    cmake 简介2021-10-03

    工程查找并使用其他程序库方法 开发软件时候我们会用到一些函数库,这些函数库不同系统安装位置可能不同,编译时候需要首先找到这些软件包文件以及链接库所在目录以便生成编译选项...该命令参数 path* 指示目录查找文件 name1 并将查找路径保存在变量 VAR 。...清单5第3-8行意思是 /usr/include/ 和 /usr/local/include/ 查找文件db_cxx.h ,并将 db_cxx.h 所在路径保存在 LIBDB_CXX_INCLUDE_DIR...该命令参数 path* 指示目录查找文件 name1 并将查找路径保存在变量 VAR 。...清单5第3-8行意思是 /usr/include/ 和 /usr/local/include/ 查找文件db_cxx.h ,并将 db_cxx.h 所在路径保存在 LIBDB_CXX_INCLUDE_DIR

    35320

    记录一下踩坑(ERROR: x264 not found using pkg-config

    一.编译x264(在编译前确保安装了pkg-config默认/usr/share下)   1.下载x264源代码:(我下载到了~/Downloads下,各位随意就好)     git clone https...prefix=/usr/local/x264     make -j16(具体看自己电脑几个线程)     sudo make install     注:prefix用来指定bin,include,lib文件生成位置...;如果不指定,默认安装在/usr/local下   4.重点来了!!!...【ERROR: x264 not found using pkg-config】     如果使用prefix指定了以上路径,一定要进行以下操作,否则编译ffmpeg时会出上述问题     /usr/...local/x264/lib/pkgconfig/下有一个x264.pc文件,将它移动到/usr/share/pkgconfig下【pkg-config会搜索这个路径.pc文件】      sudo

    3.3K40
    领券