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

深入浅出CMake(三):find_package 添加依赖

目前我们还不知道怎么样处理工程中引入第三方。 以 Unix 环境下的 c++ 代码工程为例。 加入工程要引入一个 libtest.so 动态,源码是 hello.cpp。...但是 Makefile 的编写有时候也是一件痛苦的事情,用 CMake 可以比较轻松实现同样的目的,所以这篇博文我们讲解如何用 cmake 处理文件的引入情况。...package cmake 的编译体系中,package 用来指代一个依赖,包括一些头文件、动态、静态等等, CMakeFileLists.txt 中通过 find_package()命令可以很轻易实现...比如很多同学可能会用 OpenCV 进行图像开发,它是个非常有名的开源,它有 10 来个文件、几十个头文件,因此如何正确引用它就是一件值得小心翼翼的事情,但好在 cmake 可以轻松搞定这件事情。...可能有同学好奇,cmake 怎么就人工智能一般能够自动找到依赖呢? 这个,我下一篇详细讲解一下。

11.2K41
您找到你想要的搜索结果了吗?
是的
没有找到

VS2008目怎样添加“依赖(lib)”、“目录(Libs)”、“包含目录(include)”和“引用动态链接(dll)”

(lib)”、“目录(Libs)”、“包含目录(include)”和“引用动态链接(dll)” 现在正值筒子们做毕设,但是以前项目经验少的同学会遇到一些配置的问题。...针对单个项目的方法 ---- 添加编译所需要依赖文件(lib) [解决方案资源管理器]项目->属性->配置属性->连接器->输入->附加依赖里填写***.lib,多个 lib 以空格隔开。...注意,经常用到的和头文件才会用这种方式配置。 关于dll的放置问题 ---- 如果一个项目依赖的运行依赖一些特殊的dll,则会牵扯到dll的放置问题。...以Debug模式为例,一般的VS工程有两个Debug目录,一个与sln文件平级(假设为Debug1),另一个项目文件夹的下一级目录(假设为Debug2)。...一般最后的的输出文件都会在Debug1中,而中间生成文件Debug2中。 我们直接运行Debug1的可执行文件(*.exe),这需要在这个目录下面放置所依赖的dll。

2K30

面向 C++ 的现代 CMake 教程(五)

第七章,使用 CMake 管理依赖关系: 为了使项目更有趣,我们将引入一个外部依赖:一个文本 UI 。我们在这一章描述了几种依赖管理方法。...另外,您可以使用target_link_libraries()命令将它们作为依赖添加。 我们的Calc中,对象将有助于避免为的静态和共享版本重复编译源。...此目标还将链接到外部依赖:函数式终端(X)用户界面(FTXUI),由 Arthur Sonzogni 编写(进一步阅读部分有一个到 GitHub 项目的链接)。...我们将遍历所有文件,并详细查看它们做什么以及它们项目中的作用。这将在四个步骤中完成:构建、测试、安装和提供文档。 构建和管理依赖 所有的构建过程都是相同的。...,《使用 CMake 管理依赖》中有详细描述。

7200

maven:prfile应用示例,通过profile控制不同的平台依赖对应的

基于maven的项目开发中,肯定会使用一些第三方,有一些第三方是有平台限制的,比如google的核心guva,22版本以后就区分为标准jre平台和android平台,如下图: 如果你的应用项目使用了...guava并需要在android平台和标准jre平台上运行,那么就要使用不同的版本的依赖。...本文就是以guava为例,说明如何解决pom.xml通过profile来控制不同的平台上自动依赖正确guava版本。 以下pom.xml文件片段示例解决办法,参见代码中的注释。...-- 添加guava依赖 --> com.google.guava guava</artifactId...-- 注意这里版本号字段并不是个常量, 而是使用${guava.version.suffix}属性来动态定义版本号后缀, 这就为项目自动根据平台使用不同的依赖提供了可能

42720

依赖管理(二):第三方组件Flutter中要如何管理

Dart中,和应用都属于包。...date_format包最新的版本是1.0.6,于是接下来我们把 date_format 添加到 pubspec.yaml 中: dependencies: date_format: ^1.0.6...现代编程语言大都自带依赖管理机制,其核心功能是为工程中所有直接或间接依赖的代码找到合适的版本,但这并不容易。...当然,如果你的工程中的依赖比较多,并且依赖关系比较复杂,即使再优秀的依赖解决算法也需要花费较长时间才能计算出合适的依赖版本。...如果我们想减少依赖管理器为你寻找代码依赖版本所耗费的时间,一个简单的做法就是从源头抓起,pubspec.yaml 文件中固定那些依赖关系复杂的第三方们,及它们递归依赖的第三方的版本号。

3.4K20

腾讯云 CMQ 消息队列 Windows 环境下的使用

操作:管理器→常规→附加依赖→libcurl_imp.lib(这个是我自己生成的 curl 文件,相同环境下可以直接拿去用)→确定。...5.生成动态(dll) 更改项目配置类型: 之后的操作流程跟静态的流程基本相同,注意检查下所有的附加和附加依赖是否添加完整!这里务必检查下,因为更改配置类型后,部分需要重新添加。...Dll 配置类型下附加目录和附加依赖分属不同的编辑页面: 至此,所有配置修改完成后,直接项目名→右击→生成(重新生成的话会把之前的 lib 删掉)。 三....CMQ SDK 使用 需要使用 cmq 的项目中,添加 cmq c++ sdk 的头文件路径和文件路径,并在附加依赖中输入 cmq c++ sdk 静态。...生成的动态路径需要添加到系统 PATH 路径中,也可以将生成的动态复制到程序的当前路径下。 备注:附上 cmq_sample.cpp 对 CMQ 的基本操作,之后可以根据自己的业务做相关的开发。

4.8K10

【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据 ( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据访问对象接口 | 定义数据实例类 )

框架 来说 , 使用 Java 语言 开发和使用 Kotlin 语言 开发 , 需要在 build.gradle 构建脚本 中进行不同的配置 , 主要有以下两个配置不同 : 应用的插件不同 ; 导入依赖方式不同...@Dao 注解 定义的 Dao 数据访问对象接口 是一个 interface 接口 , 使用 @Dao 注解修饰该接口 ; /** * 数据访问对象接口 / 使用 @Dao 注解修饰 * 提供数据的增删改查方法...对象的 build 函数 , 创建数据 ; 注意 : Room 原则上不允许主线程操作数据 , 如果要在主线程操作数据 需要调用 RoomDatabase.Builder # allowMainThreadQueries...RoomDatabase 抽象类 , 使用 @Database 注解修饰 该抽象类 ; 其中需要 定义 获取 数据访问 对象 的抽象函数 ; 将该类定义成 单例类 , 单例对象初始化时 , 创建数据...Room 框架访问数据 首先 , 获取 数据实例类 StudentDatabase ; 然后 , 获取 数据访问对象接口 StudentDao ; 最后 , 调用 数据访问对象接口 StudentDao

33930

CMake 秘籍(五)

前者允许我们构建时间获取项目的依赖,并且长期以来一直是 CMake 的一部分。后者模块是 CMake 3.11 版本中添加的,允许我们配置时间获取依赖。...通过超级构建模式,我们可以有效地利用 CMake 作为高级包管理器:您的项目中,您将以相同的方式处理依赖,无论它们是否已经系统上可用,或者它们是否需要从头开始构建。...) FFTW 的依赖关系external/upstream子目录中进行检查,我们继续将此子目录添加到构建系统中: add_subdirectory(external/upstream) 我们包含ExternalProject.cmake...来处理来自开源 Git 存储依赖。...,包括 Python 接口,并在第八章,超级构建模式,示例 4,使用超级构建管理依赖:III.

42920

Linux平台:Alexa语音服务快速入门指南

GStreame的MediaPlayer安装的,才能正常工作 示例应用依赖关系 构建示例应用是可选的,但是要求: PortAudio v190600_20161030 GStreamer 注意:...1.10.4 或更新 分流器的 Crypto Libary GStreamer 使用的HTTP 客户端和服务器:libsoup AAC和HE-AAC解码: libfaad-dev 准备 创建构建之前.../alexa-rpi/include 请注意,在运行cmake并将其构建到SDK之前,你可能需要授权Sensory,可以Sensory Github页面下发现一个授权Sensory的脚本bin/license.sh.../AlexaClientSDKConfig.json.json的内容应该填入你的产品信息(你注册产品和创建安全配置文件从开发人员门户获得),和数据和声音的位置.这个json文件 是集成测试正常工作必须的...> 运行cmake之后,运行make install安装这个SDK 和头文件将被安装到指定的目录,另外,生成AlexaClientSDK.pc,可以支持pkg-config.系统上使用 使用SDK构建应用程序

2K20

【错误记录】记录处理 ijkplayer 依赖问题 ( jcenter 仓库问题 | 查找并配置 ijkplayer 源 | 手动本地配置 ijkplayer 依赖 )

今天早上编译 Android 程序 , 发现无法编译通过 ijkplayer 依赖无法正常下载 ; 项目中使用了如下依赖 : implementation 'tv.danmaku.ijk.media...'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8' 上周还能运行 , 周末回来 , 周一无法运行 ; 记录下排查流程 ; ijkplayer 远程仓库无法使用 , 本地配置...// ijkplayer 仓库 maven { url "https://repo.spring.io/plugins-release/" } } } 三、手动本地配置...ijkplayer 依赖 ---- 参考 https://blog.csdn.net/shulianghan/category_11697316.html 专栏中编译的 ijkplayer 依赖版本..., 将编译后的依赖导入到本地 ; 依赖下载地址 : https://download.csdn.net/download/han1202012/85008881 将目录中的 ijkplayer-armv7a

86220

面向 C++ 的现代 CMake 教程(二)

CMake 中,一个项目包含管理将我们的解决方案带入生活的所有源文件和配置。配置从执行所有检查开始:目标平台是否受支持,是否拥有所有必要的依赖和工具,以及提供的编译器是否工作并支持所需功能。...但是有一个问题;与可执行文件和目标不同,自定义目标只有它们被添加到依赖图时才会构建。我们来了解一下那是怎么回事。 依赖图 成熟的应用程序通常由许多组件组成,我这里不是指外部依赖。...导入的目标 如果你浏览了目录,你知道我们将讨论 CMake 如何管理外部依赖——其他项目、等等。IMPORTED目标本质上就是这一过程的产物。...如果OR被评估为1,则将-rtti添加到enable_rtti编译选项。否则,什么都不做。 接下来,我们可以用enable_rtti接口链接我们的和可执行文件。...将目标文件链接成单个可执行文件,并添加所有其他依赖——动态和静态。 要运行程序,操作系统将使用一个名为加载器的工具将它的机器代码和所有必需的动态映射到虚拟内存。

25800

CMake 秘籍(二)

由于这些是我们项目的必需依赖,如果找不到这些依赖,配置将停止并出现错误。 请注意,我们明确要求 CMake 检测 Python 可执行文件的安装。这是为了确保可执行文件、头文件和具有匹配的版本。...还请注意target_sources命令,它将依赖添加到${CMAKE_CURRENT_BINARY_DIR}/use_numpy.py;这样做是为了确保构建pure-embedding目标会触发前面的自定义命令...我们不是直接链接可执行文件,而是可以将依赖收集到一个单独的目标中。使用 PUBLIC/PRIVATE 关键字,我们可以调整相应标志和定义对目标依赖的可见性。...为依赖编写我们自己的 find-package 模块。 本食谱中,我们将展示如何从 CMake 内部利用pkg-config来定位 ZeroMQ 消息。下一个食谱,检测外部:II....并非所有软件包供应商都提供 CMake 发现文件,但这变得越来越普遍。这是因为导出 CMake 目标使得第三方代码消费和/或程序所依赖的额外依赖变得非常容易。

42020

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券