意大利语c++社区:Conan Package Manager for c++ in Practice

2021年10月14日

< 1分钟阅读

意大利语c++社区:Conan Package Manager for c++ in Practice
演讲描述:c++的Conan包管理器在简单和高级开发环境中都很有用。加入柯南团队,看看它是如何工作的,通过一个简单的演示,使用来自ConanCenter的OSS库和工具,以及一个更完整的演示,展示如何创建和上传一个包,包括不同平台的不同二进制文件到一个私有存储库。此外,学习许多其他独特的和创新的先进柯南沿途功能。

资源幻灯片的源代码可以在这里找到:https://github.com/memsharded/meetup_code

点击此处查看幻灯片

演讲者

迭戈·罗德里格斯-洛萨达·冈萨雷斯

    迭戈·罗德里格斯-洛萨达·冈萨雷斯

    迭戈·罗德里格斯

    迭戈罗德里格斯-洛萨达冈萨雷斯的激情是机器人和软件工程和开发。他在工业、机器人和人工智能领域使用C和c++开发了多年。在2012年之前,Diego也是一名大学教授和机器人研究员,工作了8年。2012年,他退出学术界,试图建立一个C / c++依赖管理器,并与人联合创办了一家初创公司。从那时起,他主要使用Python进行开发。迭戈是柯南。io C / c++包管理器的共同创建者和维护者,现在在JFrog担任高级软件工程师和C / c++倡导者。

    视频记录

    大家好!
    嗨,迭戈,你好,你好,再见
    这是我们第一次乘坐混合动力车来到这里
    meetup
    这里有很多人参加,所以
    给我看看你发出点声音发出点声音
    人是的
    这这有一些真是太好了
    前面的人是真的
    在一个真正的房间里,我们有一个大电视
    在我们面前,这样人们就可以
    观看会议现场直播
    我们有流媒体播放视频
    在YouTube上,这是一种新的设置
    对我们来说,但我认为它会有很好的发展
    谢谢你,迭戈,你接受了
    邀请和
    谢谢你的精彩讲座,我
    我很想去那里
    人,但作为替代品,我认为它
    这会很好,谢谢,谢谢
    非常感谢你邀请我
    谢谢迭戈下次下次
    很少有人是
    欢迎我们,说点好听的
    Cera由Julian和rui ola制作,大家好
    还有莱昂纳多·波诺
    好的,我认为
    我们我们可以开始治疗了,迭戈

    我们来试试a的第一种形式
    意大利超级巨星的混合仪表
    社区感谢diego
    完美的
    谢谢你Marco
    谢谢大家我的名字是
    我和迭戈是柯南的一员
    联合创始人,今天我要给大家
    给你介绍一下柯南
    但我想准备些东西
    一些特别的东西,所以今天的课程有
    两个部分
    第一个是我们设为
    相对简单和常见的东西
    正在使用现有的包
    有人为之创建的第一个包
    我们要消耗它们
    使用它们,然后我们要
    学习如何创建我们自己的包和
    上传到我们自己的服务器,但我
    我要用新的来做这部分
    我要做一个特别的积分
    关注cma透明集成
    我们已经有了
    今天在柯南140发布
    还有量子141,我来解释一下
    这个对这个的新积分
    流然后为最先进的
    高级用户我将解释两个
    高级用例,第一个是如何
    你能同时处理多个包吗
    源代码更改的源代码
    多个数据包同时其中
    是可编辑的功能和我也是吗
    我要做一个交叉建筑的演示
    将构建和主机配置文件设置为
    启用高级的跨构建场景
    让我们先从简短的开始
    对于那些新手的介绍
    因为conan冒号是CNC的一个包
    另外,它是开源的MIT许可证
    所以你可以用它做任何你想做的事
    希望它能在任何平台上运行
    今天我们瞄准任何平台
    是否打算交叉构建到android
    例子
    它可以与任何构建集成
    系统我今天会用到很多
    但即使你有visual studio
    我指的是原生视觉工作室
    溶液或生成文件或介子,甚至
    你的财产系统柯南可以使用它
    它一直是一个稳定的项目
    《柯南一号
    从0到141
    版本每月一个版本,没有
    它有一个非常活跃的
    很棒的社区真的很有帮助
    在柯南中心创建包做
    捐款帮助
    彼此在懈怠和不和
    渠道
    所以这个社区是最好的之一
    柯南的事情
    关于建筑,柯南是
    使用典型的服务器客户机
    集中式架构
    所以我们有了j4柯南
    中心回购是一个服务器
    包含了
    流行的开源软件包
    库,这些是包
    社区正在创造它
    把他们贡献给中心,所以他们
    是否可供其他用户使用
    但是您可以很容易地托管自己的j4
    人工实例我们有一个社区
    版本,这是完全免费的,如果
    你想存的都是你自己的
    为您自己的私有包打包
    你可以自由地去做,然后你就可以拥有
    正在下载软件包的客户端
    从内容中心或从你自己的
    人工实例,或者两者都有
    最重要的特征之一
    柯南是它管理的方式
    二进制,我们今天会看到它的实际应用
    但我想给大家一个大的印象
    第一个
    每个包装都有一个配方a
    Recipe是一个python脚本
    它描述了一个包是如何构建的
    来自源和来自源的数据包
    好吧
    每个食谱都可以创造出任意数量的
    每个二进制文件不同
    配置每个不同的平台
    或编译器
    该配方将创建自己的二进制文件
    柯南将存储和管理所有
    那些与配方相关的二进制文件
    创造了它们
    如果我们
    更多地关注这个模型
    我们可以引入包id的概念
    包id的概念是一个散列
    配置的哈希值
    用来创建二进制文件,所以对于a
    给定食谱,在这种情况下
    Mylib 1.0配方说明python脚本如果
    我们用一组
    选项
    例如我们在右边这里我们
    可以看到设置是一组选项吗
    编译器的操作系统
    构建构建类型编译器
    版本
    如果它是静态的或搜索的
    图书馆,我们取这个
    构型我们有它,然后我们得到
    第一个包id
    如果我们改变改变这里的一些东西
    例如,我们改变它的配置
    从一个静态图书馆到维也纳
    证书库,那么二进制文件将是
    不同,我们会得到不同
    包id因为散列内容
    构型的结果是a
    不同的散列和不同的包
    如果我们现在改变构建
    从发布到调试二进制文件的类型为
    一个不同的,它将被管理
    在不同的包id下,因为
    散列的配置也是新的
    哈希
    这个概念很重要
    我们将看到今天的生活,我们将
    创建不同的包
    配置
    看看它是如何工作的
    呃,创建多个多个二进制文件
    因为同一个包裹并不意味着
    内核实际上是重要的
    非常有效率,因为当你
    构建所需的包
    你可以有
    即使你想要100个不同的二进制文件
    在服务器中,我们在内容中做
    我们正在建设的中心
    100多种不同的二进制文件
    这些开放源代码的配置

    但是当你安装的时候
    需要构建您的应用程序和您
    柯南安装吗
    只有二进制文件用于您的配置
    下载这个是什么意思
    作为一名开发人员,工作速度很快,而且
    而且对于ci工作也是非常高效的
    高效是因为你只需要下载
    这正是你所需要的
    构建
    柯南的另一个重要概念是
    它抽象了构建系统
    就像我说过的,我们今天要用
    嗯,做很多

    这不是强制性的,你可以
    不同的包使用不同的构建
    系统
    这就是我们实际得到的
    列中心有
    他们没有使用所有这些软件包
    它们永远是被创造出来的
    使用不同的构建系统
    因此,您可以使用任何
    建立系统,你就可以消费
    这些包与任何其他版本
    系统不一定是相同的一个和
    你可以把它们混合
    我们稍后会看到它是如何工作的
    好吧,你可以猜到我不喜欢
    幻灯片我很快地看了一遍
    我要开始了
    现场演示,希望一切顺利


    我将从这个例子开始
    如何使用已有的软件包
    那是别人为我们创造的,而我
    将展示两个例子,首先使用
    Lib curl,然后使用cmake
    这里有一些代码,这些代码
    我有它在github的回购,如果你是
    感兴趣的我会分享github
    回购后的今天
    meetup
    好的,让我们
    我要向你们介绍这个
    这里有个小例子
    我将构建一个小应用程序
    一个应用程序将做一个
    http
    get请求
    到服务器
    为了做到这一点,我将使用
    唇色库
    这是主要的
    它没有什么特别的,只是使用
    旋度
    图书馆
    这里是get
    中指定的url
    命令行和打印
    get HTTP请求的结果
    这对我们来说不是很重要
    今天真正与我们相关的
    今天是这样
    这是构建我的符号列表
    应用程序
    正如你在这里看到的,绝对是
    和柯南没有任何关系
    这对专栏来说绝对是不可知论的
    我们将使用conon依赖
    但是你不需要修改你的简历
    列表以说明这些依赖项
    好吧,我们要做的是
    告诉柯南我们必须这么做
    为了安装,我们需要获取lib代码
    在本例中是来自于内容
    中心
    我需要指明是哪个版本
    我想用这个,我要
    编写一个命令文件。txt文件
    命令文件的最简单形式
    第一个重要的部分
    在这里指定
    我这里指定的要求是the吗
    在这种情况下,我需要的包是
    不会留下卷曲,我想要这个
    具体版本可以指定一个
    旧版本如果你需要的话
    请按您的要求选最新的
    最后我要指定我的
    构建系统在这种情况下,我正在使用
    我想让柯南生成
    必要的文件
    要集成我的cmake构建在这个
    如果我想为我的
    依赖关系,我想要
    生成一个工具链文件,这样我就可以调用
    它是透明的,所以这就是我所需要的
    让柯南安装我的依赖
    让我们开始吧,让我们创建一个构建文件夹
    我要打电话给你
    柯南安装
    要安装
    首先你会看到
    好吧,柯南装的是他的风格
    安装一些正在安装的东西
    不仅是内核,还在安装
    其他库的原因是
    唇核的传递依赖
    如果我检查,我可以打印
    依赖性图
    我能看到

    这是我所依赖的
    一种唇色,但呈液态
    取决于开放的SSL和
    这就是原因
    为什么当我安装柯南的时候
    三个依赖项
    我们被要求
    然后
    这非常快
    为什么,因为柯南给我找了二进制文件
    配置为我的配置预编译
    柯南中心的二进制文件
    配置,你可以看到我正在使用
    Windows为什么,因为通常我们是这样的
    老实说,这是最具挑战性的
    平台,看我能不能成功
    在Windows上,它可能有效
    在其他平台上,柯南是行得通的
    在其他平台上也是一样
    迁移到Linux,这个演示就可以工作了
    完全一样,好的,同样的命令,同样的
    一切
    它也会起作用
    我得到了预编译的二进制文件
    所以他们是
    下载后一切都很好
    最后,正如我所指定的
    生成器模拟深度和模拟工具

    柯南为我生成了一些文件
    实际上它生成了一些配置文件
    对于不同的
    图书馆开SSL说深卷发所以
    这些依赖关系可以是正确的
    找到并生成了一个柯南工具
    为我做的改变
    然后从现在开始只是一个标准
    做一些我能做的东西,柯南工具链
    这将创建一个项目
    启动cma配置步骤
    我用的这个箱子
    Windows和visual studio
    生成一个visual studio项目
    我当然可以打开车门,然后
    从我的id建立,但在这种情况下,我是

    从命令行构建
    更方便一点
    为演示目的
    这将是我的
    微应用,现在我可以了
    运行应用程序
    是的,它似乎在做一些事情,我
    没有提供url
    让我查一下
    是的,比如这个
    和很多开发者一样,我猜你们中的一些人
    谁爱猫?
    有人用你的双手
    爱的
    爱猫的人在那里没有,是的,有一些
    他们
    我猜
    所以
    我们可以
    Ping这个,对这个url做一个get请求
    里面有一些关于猫的事实
    如果一切顺利,我们应该
    这里有一个事实,一些著名的人
    不喜欢猫的拿破仑·波拿巴
    艾森豪威尔,希特勒,好的

    看来我们的应用程序是成功的
    跑步,这是这是有效的
    很好,我们做了第一个
    应用程序使用一些柯南
    依赖关系
    那是我们用的图书馆,什么
    马可,你有什么问题吗
    不,我没听到你说什么
    没有问题,我只是想问
    打开我的麦克风
    移动PC
    但这样你会得到一些返回噪声
    所以我做不到,所以如果我不担心的话
    有问题我可以把耳机递给你
    抱歉打扰了,不,不
    没问题,请告诉我
    好吧,我是我是说我们有
    可以用图书馆,但是很快
    在柯南的第一个版本中
    人们开始问我们,如果我

    一个像我这样的应用程序
    一个柯南包,我以后可以用它
    结果是这样的
    在构建的概念中需要
    好的,现在碰巧我们有
    一些工具
    包装内容中心
    您还可以打包自己的工具
    你需要什么都行
    作为柯南包,然后你可以使用
    如我们所愿
    这是一个非常重要的概念
    柯南不会修改你的系统
    不会在系统上安装cmake吗
    水平和能够使用这个
    我需要启用Cmake 320
    虚拟环境
    我将通过虚拟
    对不起
    构建环境生成器
    我会告诉你们怎么做
    作品
    好的,现在我已经指定了
    当我要安装的时候
    我们再来一次
    现在
    我的申请将
    依靠唇珊瑚或铅笔和睡眠
    和以前一样,当然我没有
    删除了这个依赖,但现在
    作为构建需求,它取决于
    西米奇320
    好了,现在是
    不漏水的cma320,让我们给它一秒钟
    完成
    好的,结束了
    最后一次运行时,我做了我的微型电脑
    应用程序,我用我的
    系统
    即CMX
    你可以看到我的
    系统我已经安装了cmake和这个
    c是315。
    所以这就是这个内置的图像
    我以前的微应用
    好的,现在我已经安装了simic 320 as
    上诉要求
    它并没有改变系统
    但它对我产生了一个
    脚本
    带有环境变量的脚本
    我可以做运行柯南建立点垫
    它改变了环境,所以现在如果我
    问嘿
    哪一个
    c使
    我们可以看到这是指向
    在圆锥体内部的cma320
    缓存
    所以每当我奔跑
    现在cmake
    等于320。
    现在我可以构建我的应用程序了
    所有东西都将运行cma320
    您可以同时安装多个
    模仿你想要的版本
    如果你什么时候想回来
    到前一个
    你关闭了环境,然后
    你回来了
    对系统而言
    cmake
    好吧
    这是a
    强大的功能被称为
    构建要求您可以在那里放置工具
    然后很容易地使用它们
    好吧
    我们将再次使用这些构建请求
    在交叉构建示例中
    到目前为止有问题吗?
    好的,让我们简单回顾一下
    我们所做的就是我们所学到的
    如何编写一个柯南文件。txt并调用
    柯南安装安装依赖项
    传递依赖关系
    从这里我们可以调用cma
    本机cmake
    传入内容工具链
    然后一切都会顺利,我们有
    看到了cmake工具链和
    Cmctape的新集成,他们可以
    提供完全透明的集成
    这意味着你不需要修改
    你的订货单我们也有
    学会了如何使用构建需要一个
    激活环境来激活它们
    工具,无需更改系统
    非常感谢感谢的创造者
    这些包裹现在在柯南中心
    每一个都有超过1000种食谱
    Recipe可以包含多个版本和
    每个版本都可以包含100多个
    二进制文件,这是由
    社区是一个很棒的社区
    多亏了这些人
    如果你找不到
    柯南中心的二进制
    配置食谱本身
    他们知道如何从资源中构建
    如果你安装柯南,它会告诉你
    嘿,我没有这个的二进制
    配置,然后您需要添加调用
    并安装das das账单
    从来源强制申诉,然后
    会启动它会启动一个法案吗
    的源代码
    不要在柯南中包含二进制文件
    中心
    好的,现在我们来看a
    学习如何创建我们自己的包
    好的,然后我们会有一个
    库中创建一个包
    然后我们要上传
    这个包和我们自己的二进制文件
    服务器
    让我们

    到源代码
    然后我要抱歉,给我一个
    第二
    把这个清理干净,待会再用
    好吧
    这就是我想去的图书馆
    创建一个包
    这是一个很好的例子
    不好意思,很简单的一个
    你好你好世界一号
    只有一个函数
    这个函数包含一些
    输出到STD输出
    一些信息
    你好消息还有一些一些
    关于体系结构的诊断
    编译器和所有东西
    当然,一切都是正常的
    正常工作
    很简单,呃,c + +
    图书馆hello world图书馆
    再一次。
    现在我们正在使用透明
    集成cmake列表来创建一个
    包仍然是你自己的,它没有
    在这里包含任何细节
    好的,这是
    图书馆
    根据这些资料,我正在建造
    你好库
    库的头文件是这个
    然后我使用cmake安装
    筛选器来指定哪些是
    工件
    这就是这个的最后一部分
    这个库
    好吧,没什么不同,没什么
    这在CMG中很常见
    列表
    让我来介绍一下柯南文件
    Py在柯南创建一个包
    我们使用的文件。txt
    早先是一个非常简化的形式
    这只用于消费
    现有的包,如果我们想创建
    包,我们需要提供一个图标和
    这是一个python脚本
    Python脚本中包含了一些
    我要讲的重要部分
    总结现在
    第一个是元数据名称和版本
    比如包装的
    下一个重要的部分是二进制
    配置这是二进制模型
    这意味着
    如果你要改变你的
    配置,如操作系统
    或者编译器或者构建类型或者
    建筑你会得到一个
    不同的二进制
    而且在编译器里面
    是编译器。版本compile.try time
    编译器标准
    图书馆
    你不需要在这里声明
    但它们是子设置
    影响二进制配置
    那么在这种情况下我们有选项
    是在声明我们可以构建静态的吗
    或者某个图书馆
    只要我们想换就换好了
    这些输入中的任何一个都会得到a
    不同的二进制
    我在这里跳过这两部分,因为
    它们并不相关,让我
    关注新事物
    这些是重要的方法
    关于食谱
    好的,让我们从布局开始
    布局是一个新功能,它非常
    柯南新闻139
    以及最新的《古兰经》140和141
    释放
    指明物品的位置是很有用的
    这是预定义的吗?
    西米奇布局
    函数
    指定典型的cmake布局
    典型的cmake布局将包含
    像这样的风景列表在根
    调用时存储库的
    它会产生一个确定的a
    这是文件夹的特定结构
    这个cmake布局是什么
    表示您可以自定义此
    我的想法是
    只要你有特别的东西
    没有类似列表的例子
    然后你可以指定一些东西
    就像一个自我
    文件夹。source
    你可以这样做,然后
    这意味着您将拥有CMC
    列表将位于源文件夹中
    你的根源并不是
    根的回购,但源代码
    文件夹
    好吧,知道一切并不重要
    这个方法的细节还在这里
    的局部结构
    你的源代码和
    项目
    下一个方法是生成方法
    完全等同于生成器
    我们在量子中看到的部分
    文件。txt在这个例子中我们告诉
    我们要去我们要去参加柯南
    工具链。因为我们要去CMG文件
    使用它
    这里重要的部分是

    在这里向这个部分展示这个方法
    是因为你还可以定制很多吗
    如果你想的话
    人们说
    所以
    指令
    你可以在这里加上一些东西
    一个值,有很多方法
    可以定制这个sim对称链吗
    在这个功能中,你可以随心所欲
    如果你想注入自己的价值观
    改变一些骗局
    默认是因为模式工具链
    包含一些默认的逻辑
    非常深入地定制它
    构建方法是一个非常薄的包装器
    围绕cmake命令行
    这semiconfigure
    基本上和跑步一样吗
    cmake
    并传递工具链文件创建
    项目和cmake构建是
    基本上与调用cmake相同
    这是刚刚建立起来的
    实际上你可以
    你自己试试,就能换掉
    像你自己一样奔跑
    这就是泄漏
    基本上是一样的
    如果你有自己的建筑
    系统
    只是一个叫你build的问题吗
    有你需要的参数的系统
    生成您想要的构建
    包的方法完全相同
    目标是一旦构建完成
    它会从
    构建文件夹到最终包文件夹
    这这是蛋糕上的薄包装纸
    命令行,相当于
    调用已安装的cmake dash
    最后是这个重要的包信息
    方法的信息
    消费者这是位信息
    从柯南那里分离了构建
    系统
    这是在告诉消费者嘿,如果
    当你使用这个包时,你是
    链接到一个库
    叫你好
    如果库名改变了,它就是
    准备改变这种方式为什么因为
    模拟信息是不够的,如果你
    你打算消费这个套餐吗
    直接在visual studio你需要
    有人告诉视觉工作室的名字
    库的名称是hello.lib
    这就是这个地方
    信息将被包含
    用这个食谱来冷却
    创建内容包
    叫柯南是创造和点吗
    有了这个命令就可以了
    烧制不同的食谱方法
    调用生成
    生成文件
    调用
    Cmec,构建方法,构建方法
    将首先调用配置步骤吗
    创建项目
    对我们来说,你可以看到它在使用
    我的默认配置
    没说有什么特别的
    创建默认的包
    配置最后调用

    这里我们可以看到
    工件被放入
    包是头文件和库
    本身
    如果我用命令搜索所有东西
    本地的当然在我的机器这个
    本地的账单是在我的吗
    柯南猫,如果我搜索柯南
    它会告诉我我的食谱
    我的石膏里有这些吗
    之前我用的
    之前的例子
    然后是hello 0.1
    包在我的本地缓存中
    检查
    你好

    我将看到我有一个二进制
    这个二进制文件是为我的
    默认配置是可视的
    工作室
    64位
    的动态运行时编译器版本
    16
    以此类推,这是包id
    简化后的哈希值是多少
    但基本上是这样的
    假设现在我需要维持
    这是我的重要图书馆
    我们正在部署它
    库为一些自动取款机,他们
    碰巧在Windows上运行
    Windows版本,32位和
    我要跑了
    链接到静态运行时和I
    需要使用旧版本的编译器
    因为
    一个新的新的比较不会与一个相匹配
    无人机在那台机器上运行
    所有
    所以我可以重复这个圆锥形,然后创建
    过程,在这个例子中,我要
    详细说明我要说的细节
    我的版本是15岁而不是
    16
    我要告诉编译器
    运行时
    是静态的吗
    部署在ATM机中

    举个例子
    我的结构是32
    因为
    把机器放在这个这个喂
    库将运行此二进制文件
    32位
    现在是创造的过程
    包调用生成调用
    调用包方法的构建方法
    在这种情况下,我们会再次被调用吗
    使用visual studio 15,它将是
    向右传递正确的参数
    比如建筑等等
    图书馆就这样建起来了
    对这个正确,对这个正确
    配置
    如果我们现在指定
    抱歉,如果我们现在再次检查
    包我在本地的二进制文件
    帐款及现金
    我可以看到我有这两个
    不同的二进制文件,第一个
    本机桌面的二进制文件
    系统,我有这个二进制
    自动取款机上的那个
    使用15 32位和运行时静态
    此外,我们可以
    我们可以交叉使用,比如我们
    现在我们要交叉构建
    一个android应用程序
    相同的库部署在一些
    一些android应用程序
    作为本机代码维护
    效率
    怎么做才能让我成为第一个
    发射这个,而不是这个I
    可能经过这里
    是一条手臂v7是多少
    操作系统可能是android
    你可以猜到这不是一个非常
    实用的方法
    管理配置
    所以与其这样
    我要做的是使用个人资料
    这是推荐的方法
    在生产中使用
    维护不同的二进制文件
    不同的配置而不是
    在命令行中传递它们
    一直以来
    你需要把设置和
    像这样的文件中的配置
    你想一直用这个文件
    柯南有分享这个的机制
    文件,这样这个文件就可以放了
    在开发人员的ci机器中
    机器很容易,我们可以看到
    我们有这个的设置
    二进制,也就是android
    API级别23的编译器版本等
    现在我想介绍一个新的
    的机理
    新型现代转角机构
    新的配置,也可以
    在概要文件中定义
    这是指定像for这样的东西
    例子是我的安卓NDK
    在这种情况下,我安装了android NDK
    在系统的这条路径上
    这样就可以定位了,我也想
    为此指定
    我想使用忍者生成器
    因为,而不是因为
    我们都知道忍者速度很快,而且非常
    很酷的
    所以我们可以把它保留在这里
    是一种新的配置机制吗
    它比我们用的更强大
    在这之前是环境变量
    更有条理
    所以
    有了这个侧写,我们可以去
    命令行并指定
    侧写而不是一堆
    命令行中的设置和选项
    哪个更容易出错
    现在为android创建包
    配置文件
    我们会看到账单的
    对不起,账单现在就到
    对不起
    现在
    正如你在这里看到的,这是用
    编译器在android
    的NDK
    系统我们可以看到我们是我们是
    使用忍者
    西米奇发电机
    我们可以看到最后的
    正在构建二进制文件
    我可以保证我只是为了
    克里斯蒂,是的,我试过,我试过
    移动这些库和这些库
    以这种方式构建的应用程序是实际的
    安卓设备,它可以工作
    实际的积分
    Cmake的android NDK是漂亮的
    很酷
    所以
    现在
    如果我做内容搜索
    我要确保我有这三个
    不同的二进制文件
    好吧,我把这个机器人放在这里
    用这个配置和这个包
    id
    我要我的Windows桌面电脑
    这里和我也有Windows
    atm的遗产
    这里是32位二进制
    这是最基本的
    二元模型
    好了,我们创建了这些
    我的电脑里有三个包裹
    但我想要的是和大家分享

    这些包裹和我的团队一起
    和我的公司,这样他们就可以减少成本
    他们可以使用它们
    这样他们就不用重建了
    从这些图书馆的来源
    因为在实际情况中,hello是a
    图书馆,一个很大的图书馆
    一堆时间来编译所以我
    我想和你分享这些包
    我的团队
    欢迎来到
    Artifactory好的,Artifactory是
    JFB服务器在这种情况下,我在这里使用
    手工ce社区版哪
    柯南的套餐是完全免费的吗
    你可以用这个
    商业上专业上贵公司
    客户端完全免费
    哪个是MIT和服务器
    这里我们可以看到我们有一个柯南本地节目
    回购你可以有多少涟漪
    想要
    我们可以得到这个波纹的url
    这就是我们所需要的
    能够上传包到这个

    所以我已经加了这个遥控器
    我的
    到我的本地内容客户端
    现在我可以上传内容了
    我将上传hello包
    我的人工遥控器
    我想上传所有的二进制文件
    是我创造的
    是的,现在柯南正在上传
    二进制文件
    我们去看看艺术工厂吧
    这里我们有hello包
    有hello包的零点吗
    版本
    如果我们往下一点
    在文件夹中
    我们会看到我们有这三个
    不同的
    不同的二进制文件
    如果我们进一步检查,就会知道了
    我们有
    android的包
    在这里
    我们有Windows的软件包
    桌面机
    我们会有
    的包裹
    用于Windows操作系统,用于自动取款机
    这很酷,因为现在
    即使你
    处理你需要管理的很多不同
    Linux构建和不同的Linux发行版
    编译器和编译器版本
    想介绍一个新的编译器版本
    你不会破坏你刚刚建立的任何东西
    新的二进制文件给新的
    上传时的编译器版本
    前面的轮子和前面的轮子
    编译器不会被破坏,它们会保留
    使用
    之前的编译器版本,然后
    你可以开始
    只是在推一个新的编译器版本
    很容易
    你也会看到你会意识到
    除了你好包裹之外的东西
    我让curl打开SSL设置
    这是你
    能做的其实是推荐做的
    而不是直接依赖于
    柯南告诉我今天做了什么
    案例网络错误演示效果
    不管怎样,我没有拿走藏物
    我直接从柯南中心抄了一份
    把藏物送到我的工厂
    实例,现在我完全健壮了
    反对任何失败,没有什么可以
    打破
    这是推荐给你的
    生产如果你是即使你是
    要用量子中心包
    拥有自己的反工厂实例
    做一个包的拷贝
    你用的是很好的练习吧
    NPM是我们想要的方式吗
    车辆实行左侧通行
    一切都不会发生,如果我们

    如果我们能做到最好
    实践
    很好,现在
    你好,包
    在服务器上我们可以完美吗
    抱歉,我们完全可以
    从本地删除hello包
    客户端
    再也不能回溯了
    很好,现在包已经准备好了
    这意味着

    我们可以回到之前的项目
    记住我们是微应用程序
    中使用hello包
    微应用
    我们开始吧
    让我们看看有一个包是如何工作的
    经理就位
    我要做的就是把
    的hello.h
    我将调用hello函数
    像这里
    这是可控的
    在本地
    cmx语法
    所以如果你向另一个人问好
    这个机制不是柯南管理的
    语法还是一样的
    你好
    最后我要加上hello
    这里的依赖
    在我的列文件中
    这意味着现在如果我做一个柯南
    安装
    这取决于hello
    它会从
    的artifactory
    它会下载二进制文件
    直接生成二进制文件,无需重新构建
    再一次。
    如果我现在重新构建应用程序
    我只是重用了这个库
    从conan包中创建
    服务器被拉进我的
    我的本地项目
    我可以在这里看到hello依赖项
    做它的东西,打印它的
    消息
    好的,我们来做a
    简要回顾一下我们所做的工作
    学习了如何创建包指定
    不同的设置不同
    要创建不同的配置
    二进制我们已经学过了
    概要文件以及如何使用概要文件
    配置管理
    我们已经学会了如何上传这些
    那些包和二进制文件
    到我们自己的人工服务器上
    我们能等会再用这些包裹吗
    在其他项目中,在我们的团队中
    我们的公司

    这是我我很少说这是一个好
    练习使用艺术工厂的设备
    独立、隔离、高效、
    健壮字段是推荐的实践
    柯南中心很酷
    但如果你想要坚如磐石
    最好同时使用工件和实例
    为第三方和你自己的私人

    好的,这是
    基本的东西我们已经学会了如何使用
    现有的包以及如何创建自己的
    包裹,但现在我要进入
    更先进的领域
    这是
    更多企业用例
    淡水是许多柯南用户的东西
    一直在要求
    嘿,迭戈,发生了什么
    现在我要工作了
    同时在这两个包裹上
    需要更改的源代码
    hello包和
    同时微包
    这很痛苦,因为我们
    我们已经做过了
    我们已经完全模块化了
    他们可以从hello中分离出micro
    不同的版本
    它们是它们是它们是可以被开发的
    这就是我们现在得到的
    我们有hello包,我们有

    应用程序
    好吧
    每当
    我们修改源代码
    转到hello包
    然后我们需要做一个柯南创造
    一个新的
    所以这个包是在缓存中创建的
    它也适用于微型计算机
    消费者
    保险箱里的钞票总是
    从头开始
    它们不是增量账单
    图书馆和这是非常重要的他们
    保证这是一张干净的账单
    这总是正确的
    它不能做增量
    积累现金是永远做不到的
    也就是说如果你是
    构建hello库是一项繁重的工作
    只需要几分钟
    这是非常痛苦的,因为你需要
    源代码是否会发生变化
    创建等待整个账单
    然后去我的卷发

    重新构建micro
    好的,所以我们
    我们听说,我们真的很喜欢
    认真反馈所以这是其中之一
    这些是我们一直在开发的
    如果你知道的话,我们一直在迭代
    关于修改之前的可编辑内容
    它们是如何使用的
    第一点很重要
    好吧,我们真正需要的是
    我需要你好包裹吗

    本地改造和本地建造
    好吧,我不想做柯南式的创作
    这是。
    制作我想要的演员阵容
    本地流作为开发者的hello
    包本地流的意思就是
    相同
    就像我们对micro做的那样,意思是量子
    的依赖项
    你好,因为你好本身就可以拥有
    依赖性,然后调用cmake
    这就是我现在要做的
    我要转到create
    项目
    我要这么做
    完全一样
    通常创建一个文件夹
    移动到文件夹
    那就像柯南一样
    安装
    在这种情况下,我也想
    展示嗯
    这是一个重要的用例
    特别是对于使用的人
    多配置环境
    Case visual studio如果你懂一点的话
    Windows和xcode都有
    多配置环境
    意味着您可以从调试切换到
    直接在ide中释放
    好吧,既然我想要那种经历,我就去
    为…安装
    你好包,我要安装这两个
    构型我要存储
    释放一个,这是默认的
    我要安装调试的那个

    好的,然后我要创建
    我的项目
    调用cmake
    这将生成我的visual studio
    项目及解决方案
    这和我做的步骤完全一样
    为我的1000万美元
    它正在安装调用代码install and
    调用cmake
    要配置项目,请执行以下操作
    然后建造这些东西
    我可以构建释放配置

    在hello库中
    我可以做调试的那个
    好了,一切就绪,这就是
    我还好,但还是
    到目前为止,如果我现在转到旋度

    项目
    如果我做一个安装,它仍然会得到
    依赖于现金
    这是可以改变的
    柯南可编辑广告
    如果我说这个命令,我就告诉a
    当你找到hello 0.1时
    不要去缓存,去这个文件夹
    文件夹是点文件夹是
    当前文件夹,因为在此文件夹中
    你会发现
    发布你好。离开你会发现
    您需要的源代码hello.h
    从这里开始,这就是
    重要的一点发生了变化
    从属关系的位置

    我们开始吧
    柯南可编辑广告
    以防万一有几个内容
    您可以使用的命令
    你能列出里面的包裹吗
    表模式和它们的位置
    位于
    在这种情况下,你可以看到
    我的文件夹
    它不是缓存中的文件夹
    好了,有了这个,我可以去
    使用
    构建
    对于使用,break是
    只要打电话安装就行
    当我开始安装的时候
    在我的消费项目中
    很酷的项目,这就是我要得到的
    它会告诉我它仍然取决于
    叶卷打开,他们很难过
    在缓存中找到
    但是现在hello不在缓存中
    是预期的可编辑包吗
    要在本地文件夹中找到
    好吧,我也可以这么做
    对于构建类型相等
    调试好了,在这种情况下,它正在安装
    后面的依赖关系


    从现在起,它只是
    有用的东西
    调用cmake
    完成了
    现在就是我想给你看的时候
    现在我们已经把一切都准备好了
    编码我们有两个项目
    连接
    好吧,我可以
    从终端输入但是
    我想用a来证明
    几个。
    点击,我要做什么
    开放的visual studio解决方案
    好的,微观的
    例子
    这需要一点时间当然
    visual studio
    来吧,visual studio
    你可以做到的
    优秀的
    这是很酷的一件事
    有想法和其他工具

    你可以做这样的事情,你
    可以说嘿,我要加你
    另一个项目
    我要告诉你
    这是一个依赖关系
    我们得到了它
    现在
    我们可以工作好几个小时,是的,这需要时间
    点击几下,它就开始说话了
    有一点,但是现在
    我可以在这个式子中
    没几天,现在我两样都有了
    在同一个地方,我可以告诉你我可以
    执行
    它正在构建的微应用程序
    从源
    它将会发射
    这里我们可以看到它是依赖的
    在hello包中,它也是
    做自己的事
    很酷的是

    现在我当然可以改变源
    的hello包的代码
    依赖
    我可以在这里输入


    当然,它是增量的
    构建
    它将
    构建必要的东西
    它会发射
    现在是应用程序
    改变了
    留言和我都可以工作了
    与两个或两个以上的if在一起
    你想要几个包
    同时你也能做到
    这是多配置步骤
    你可以直接对bug进行修改
    在天空中
    好吧,你可以

    启动调试配置
    您可以构建和更改公告
    diva配置
    现在我们来看看
    运行调试配置
    包括英雄的效率
    然后我们就可以进去了
    当然我们可以调试

    我们可以启动应用程序
    它就会步进
    的源代码
    依赖性我们就讲到这里
    当然我们可以继续

    好吧
    这是
    可编辑功能的作用

    说实话,我真的很兴奋
    关于这个特性,因为这是什么
    两全其美的时候
    您正在使用包管理器
    模块化就是解耦
    当你需要的时候,你会感到痛苦
    工作,这真的发生在
    企业和在公司有着巨大的影响力
    项目
    他们需要做的不止一个
    一次打包
    如果有必要,这可能会很痛苦
    工具不是和我们在一起的
    使这些开发人员能够
    两全其美
    模块化他们的包有一个非常
    高效的ci二进制管理和
    当他们需要工作的时候
    或者同时在多个包上
    然后他们就能做到了,只需要几个
    点击和知道一点这是
    文档这个还没有文档这个
    这是很新的东西吗
    是未来的特征
    柯南到零将实现这一点

    作为默认值
    好吧
    这一切都能起作用是因为
    新的布局和cmake布局,我是
    给你们看之前的食谱
    好吧

    (音乐)

    然后我会我会完成我的
    今天的演讲展示了另一个
    另一个有趣的高级例子
    哪个是与甲虫的交叉建筑
    主机配置文件
    早些时候我穿过200号楼
    这是一个相对简单的
    交叉构建现在我要多放一个
    挑战性的例子是
    protobuf1
    这是一个化简
    但这是真实的原始生物的例子
    有有这个案子我们有原形吗
    1.0包,在这个包中我们
    有两件事
    我们有一个库,一个静态库
    协议。例如,其中包含
    大部分的逻辑
    我们还有一个可执行协议
    它用于生成代码
    这是一个需要的代码生成器
    在构建时使用,这是
    很有挑战性,让我来告诉你它是如何工作的
    我们假设我们想建一个
    ATM服务器包
    自动取款机没问题
    我们之前说过的机器
    这台服务器将会
    与原路径通信
    很明显,这个ATM服务器
    包将需要
    protobus包
    好吧
    它需要做这个构建
    用这个32位的配置文件
    架构编译器是可视化的
    你的15和
    和静态运行时都是ATM
    服务器1是0,主服务器是1
    零包含静态库他们
    需要用这六个设置来构建
    否则会产生链接错误
    但同时
    在构建ATM服务器时
    我得打电话给客服
    这是一个非常常见的场景,因为我
    我要生成一些
    源代码一些zip源代码一些
    从某个原型
    类声明的文件
    接口
    我在这里运行的协议包
    是否在构建上下文中运行
    构建上下文就是这个地方
    我在哪里运行的构建是我的
    我的电脑是64位的
    建筑是一个视觉工作室
    使用它们的运行时
    而宿主上下文是this
    是gnu吗?
    通过构建上下文的方式命名
    我的机器,当我在做构建
    宿主上下文是
    应用程序已运行
    在这种情况下是自动取款机
    好了,我们有了这两种情况
    现在我们有两个侧写了
    Windows PC配置文件,还有ATM
    模型1剖面
    如果我们做一个完整的
    交叉建筑,这也是可行的
    同样的方式
    我们可以
    例如,从Windows进行交叉构建
    到Linux
    机器在这里,然后构建
    上下文和构建概要文件将
    窗户
    个人电脑
    宿主环境和宿主
    这里的配置文件将是Linux
    上下文意味着这个原
    包含库的1.0应该是
    Linux二进制文件有Linux库和
    原型1.0在我的机器里
    应该是一个Windows二进制文件包含
    的protoc
    可执行的
    好了,这就是我们所建造的
    在柯南
    让我展示给你看
    这里的示例代码
    这是两个侧写这是我的
    我的Windows配置文件
    好了,这是我的我当前的构建机器
    这张是32人的侧写
    位体系结构,即主机
    机器,即ATM服务器
    这里是protobuf包
    是标准的吗
    一个正在打印的protobuf代理
    消息
    还有一个协议代理
    打印一些其他消息
    重要的东西不在哪里
    重要的东西在ATM服务器里

    这是
    这一点
    我们要用
    两者都是需要上诉的
    protobuf
    这要求是a的要求
    图书馆,这是主人的请求
    上下文
    好吧,这取决于它是否会连接
    用原生体
    构建所需的库
    构建上下文所需的是这个吗
    会把原型带到我的Windows里吗
    构建上下文
    这样才能运行程序
    可执行的
    的构建方法
    ATM服务器配方它包含一个调用
    到协议
    这个程序在这里运行
    账单里会有协议吗
    需要
    因此,它应该运行
    配置账单需要

    这是
    基本上
    让我们
    做一个柯南
    出口的原型
    作为一种
    这里是protobuf 1.0
    现在让我们转到ATM服务器
    让我们来做一个柯南创建
    就像我们之前指定的an一样
    Android配置文件现在我们可以明确
    提供两个配置文件,我要
    指定我的构建配置文件是
    windows电脑
    还有我的主机简介

    这是自动取款机吗?
    这个自动取款机
    配置文件
    我也做得很好,我们开始吧
    失败
    因为我没有创造
    原虫双星
    最神奇的是我要去
    构建
    随着建造的尘埃消失
    我现在要做的就是我要走了
    进行构建
    两种不同口味的原虫
    如果是交叉的话,也是一样的
    构建这个将首先构建protobuf
    可执行的Windows在一个Windows
    建造,然后它会建造原型
    在Linux中交叉构建构建就可以了
    让我们给它几秒钟,所以
    输出稳定,然后我就走
    通过
    通过输出
    好了,这座楼现在可以移动了
    好吧,加油,Windows,你能做到的
    现在我们开始制造自动取款机
    服务器

    从资源中构建
    最后它将开始测试

    在任何时候
    好了,我们结束吧

    你看,制作Windows真是慢得令人痛苦
    好吧
    这行得通,让我,让我
    查看输出
    我先解释一下我们可以看到这里
    我们有两个侧写
    主机配置文件
    哪个是32位ATM机
    上下文,我们有构建概要文件
    哪台是64位的mybill机器
    如果我们检查一下这里的要求
    对于这个法案,我们可以看到
    我们有两种不同的原虫口味吗
    我们有两个不同的包id吗
    这一个
    哪个是宿主
    我们有一个不同的包id
    一个不同的二进制文件,这是构建
    需要一个
    好了现在
    柯南和我以前都没做过protobuf
    在一个典型的例子中
    Protobuf已经被内置了
    两种口味的人工制品好吧,但是
    我想展示柯南的力量
    的两个不同版本
    同样的东西在同样的地方
    在同一次发射中
    首先,它将构建protobuf
    它运行的构建上下文是protobuf
    这里不太相关
    然后它将再次运行
    的主机上下文
    其他配置
    两个不同的建筑,两个不同的
    完全相同包的二进制文件
    这里是重要的东西
    开始
    它开始构建的ATM服务器
    它开始构建,它称之为构建
    方法调用的能力
    protoc
    如果你还记得的话
    好吧
    它用的是protobuf,我们可以看到
    这是在使用可执行协议
    也就是64位
    这是1929年的版本
    你不知道它是16
    这是在我的
    构建上下文
    然后这是运行
    创建ATM服务器包
    最后是测试ATM机的时候
    服务器包,它将运行在
    可执行文件,这是的输出
    运行这个可执行文件,我们可以看到
    当ATM服务器运行时
    使用的是protofat包吗
    使用
    32位架构包
    还使用了1916视觉工作室
    如果你不知道它是视觉的
    工作室15
    15 1。当然这也是a
    静态链接运行时
    可执行的
    这是
    我想要的
    让我们简单回顾一下
    使用构建和主机配置文件将是
    现在默认为零
    如果你没有指定,可以选择加入
    构建概要文件
    它在使用the
    以前的方法都是这些的构建
    上下文和主机上下文将不会是
    在那里
    好吧,这是一个可选择的功能,但是
    真心建议大家开始使用
    如果你在做交叉构建
    因为这将是剩下的
    在《柯南20》里
    我所展示的新工具
    以前像CMX这样的工具链已经用过了
    这个模型,如果你打算做任何交叉
    使用新的工具链进行构建
    然后您需要使用这两个配置文件
    这还处于试验阶段
    但在那里生产是有好处的
    有公司在用这个吗
    交叉构建方法,我们正在使用
    我们已经在量子中心了
    交叉构建osx新m1
    我们正在使用这种方法的架构

    如果你在你的十字架上使用
    遗留操作系统构建和文章设置
    求你别再这么做了试着
    往这边移动,因为这是
    在连接0和最后I中移除


    强调

    用水泥做不容易吗
    我们可以混合交叉构建的二进制文件
    对于不同的环境
    我可以向你保证这可能是
    在本地做这件事真是噩梦
    西门子
    好的,非常感谢
    感谢你的陪伴和倾听
    给你一些提示
    您有今天的源代码
    此url中的表示
    如果你有任何问题,你想
    了解更多关于柯南的知识
    课程为提问的第一资源
    在github去连接。IO和from
    你可以导航到所有这些
    2022世界杯阿根廷预选赛赛程关于问题的资源github
    并且支持文档有一个
    看,因为建议是
    广泛,我们一直在努力
    在博客上改进它
    内容中心用于获取哪个
    的软件包已经可用
    社区有很好的培训
    课程实践和免费在jfoc
    学院也是如此

    最后社区都在
    包括CPP不和和在松弛
    通道
    这个社区真的很神奇
    他们乐于助人,他们互相帮助
    回答问题,所以这是
    那里的社区很棒
    完成视频链接
    抱歉,这个不适用
    请进入这个网址或这个qr qr码
    给我的演讲打分
    前25个上网的人

    谁会来给我的演讲打分
    免费送一件柯南t恤给
    你的家还好,对那里的人来说
    在现场你已经拿到t恤了
    但是如果你想的话,对于网上的人来说
    一件t恤,请填写调查表
    在这里
    我们会给你发一个预告片

    最后非常感谢你们,如果你们
    有什么问题吗
    回应
    谢谢,戴夫,你能听到我说话吗
    是的,是的,我能听到你的声音,很好
    谢谢
    每一个人
    我听不清你在说什么,马可,抱歉
    你需要离那个更近一点
    听不清
    哦,好的
    这是一个技术问题
    (音乐)
    你现在能听到我说话吗
    听到了,好了,好了,我是说
    我想大家都还没睡
    演讲
    是的,那是太空,但我我想去
    让他们看看新事物
    所以
    好吧,如果你想继续,就别
    我犹豫了一会儿再打给我
    我们可以谈谈,我也很有空
    在松弛和其他渠道感觉
    有空以后联系我,谢谢
    我想我们有一个问题
    好的,马尔科,你有问题吗
    所以我相信你
    我的麦克风
    不,我担心那样会
    米克不是
    不管用,你得靠近点
    对笔记本电脑说,对笔记本电脑说

    你现在能听到我说话吗
    是伟大的
    好的,我已经有声纳磁带了
    Nexus存储库的到位是有办法的
    将当前包存储在这种类型上
    的存储库,而不是工厂
    这是个好问题
    所以呃
    包括nexus在内的一些主要玩家
    Sonotype和gitlab
    还有一些东西
    是云还是他们提供的
    支持量子包,以防万一
    的关系
    有一个
    有一个柯南插件,所以你可能
    需要安装插件
    对了,请试试我
    能不能从我的经验和
    我从柯南那里得到的反馈
    github仓库中的问题
    是集成不够稳固吗
    这就是人工沟通
    如果你尝试nexus,它就免费了
    很好,那我很乐意
    知道它
    但是如果你遇到任何问题
    我试着去做这件事,因为
    整合可能会更好
    好的,非常感谢
    不用谢
    其他问题
    在这里
    在这个房间里
    有人吗,让我看看YouTube吧
    我们在YouTube上没有问题
    所以
    我再查一下
    哦,我们还没有我们还没有问题
    好吧,好吧,我们没有我们没有
    我们在YouTube上没有空闲吗
    我们基本上是相连的
    目前我们有三个频道
    这里的物理通道与人
    我们有空闲时间,我们有YouTube
    也许是社会上的人
    网络也是如此
    还有其他问题吗,伙计们,没有了
    毫无疑问,先生
    我知道你想去吃披萨
    这就是为什么你没有问题
    这是。这是一种策略
    去披萨店
    我还想要一些披萨,请送过来
    一些
    我我可以我可以给你发一些照片
    我们的披萨

    不,那是那是那是对的
    好吧,我想迭戈,我想就这些了
    因为如果如果人们没有别的
    有问题吗?
    我们可以放你自由,然后
    再次感谢你的辅导,还有
    也要感谢jfrock
    t恤和
    所有的小青蛙,小青蛙
    都在这里
    我希望能再次见到你,见到你
    希望明年我能亲自来
    因为
    我对明年有信心
    我们将在罗马召开那个会议
    我们两年前就取消了

    我希望你也能去
    再次谈到柯南
    关于你的其他特征
    再加上这个
    包管理器

    如此之大
    我觉得你们可以再做一些
    噪音
    非常感谢
    谢谢,谢谢你的邀请,谢谢
    非常感谢你和我的荣幸
    希望很快能见到你
    谢谢你的t恤和
    下个月我们下次见
    另一个关于跨平台的话题
    从一个男人的粉色细胞发育而来
    再次感谢迭戈,感谢大家
    主治医生,我们去吃披萨,现在你
    能像往常一样和我们呆在一起吗
    Italiancpp.org的网址
    频道,下个月见,谢谢
    谢谢,再见
    谢谢,再见