conan入门(三):上传预编译的库(artifact)

在许多情况下,我们需要从现有二进制文件创建包,例如第三方或供应商提供的c++/c++库(仅包含include和lib目录),或者在引入conan包管理之前手动编译的c/c++库。在这些情况下,我们不需要conan从源代码重新编译,因为这可能既费时又费力,甚至根本不可行。以下是我们可以考虑直接将本地已经编译好的二进制文件生成conan包的情况:

当无法从源代码构建包时(当只有预编译的库可用时)。在工件(artifact)开发阶段,需要频繁打包以供其他应用程序使用。此时,我们只需要将编译好的工件快速提供给使用方,而不需要重新编译,因此不想调用conan create。如果您使用IDE或在本地调用conan build命令,此方法将保留您的构建缓存。本文以cJSON为例,介绍如何将预编译的二进制库(artifact)上传到conan。

cjson.build是我之前用于编译cJSON的脚本,可以使用armcc、gcc、MSVC编译linux-arm、linux-armhf、linux-x86_64、windows-x86_64平台的库。

现在我打算使用conan进行包管理,对于我来说,将这些已经预编译好的库上传到conan私有制品库是最省事的方法。

因此,我参考了conan的官方文档《Packaging Existing Binaries》,实现了将arm平台预编译库上传到私有制品库。

首先,使用conan new命令创建基本配置:

$ cd cjson.build/release/$ conan new cjson/1.7.15 --bareFile saved: conanfile.py

conan new会在当前文件夹下生成conanfile.py,我修改了其中的description、url、license、author、topics为有意义的值:

小门道AI 小门道AI

小门道AI是一个提供AI服务的网站

小门道AI 117 查看详情 小门道AI

from conans import ConanFile, toolsclass CjsonConan(ConanFile):    name = "cjson"    version = "1.7.15"    settings = "os", "compiler", "build_type", "arch"    description = "Ultralightweight JSON parser in ANSI C."    url = "https://github.com/DaveGamble/cJSON"    license = "https://github.com/DaveGamble/cJSON/blob/master/LICENSE"    author = "DaveGamble"    topics = "json"    def package(self):        self.copy("*")    def package_info(self):        self.cpp_info.libs = tools.collect_libs(self)    def configure(self):        del self.settings.compiler.libcxx

接下来,使用conan export-pkg命令将release/cJSON_arm-linux-gnueabihf(适用于linux-armhf平台的库)下生成的arm平台库打包保存到本地仓库($HOME/.conan/data):

$ cd cjson.build/release/$ conan export-pkg -pf cJSON_arm-linux-gnueabihf conanfile.py  -s os=Linux -s compiler=gcc -s compiler.version=4.8 -s arch=armv7 --forceExporting package recipecjson/1.7.15@cjson/1.7.15: A new conanfile.py version was exportedcjson/1.7.15@cjson/1.7.15: Folder: C:Usersguyadong.conandatacjson1.7.15cjson1.7.15exportcjson/1.7.15@cjson/1.7.15: Exported revision: a7a0296958b0d29e5e4f34434b1808cdcjson/1.7.15@cjson/1.7.15: Forced build from sourcePackaging to 755fc07adbed235a7d3eadec4b6882d4912f09bccjson/1.7.15@cjson/1.7.15: Exporting to cache existing package from user foldercjson/1.7.15@cjson/1.7.15: Package folder C:Usersguyadong.conandatacjson1.7.15cjson1.7.15package755fc07adbed235a7d3eadec4b6882d4912f09bccjson/1.7.15@cjson/1.7.15: Packaged 1 '.h' file: cJSON.hcjson/1.7.15@cjson/1.7.15: Packaged 1 '.a' file: libcjson.acjson/1.7.15@cjson/1.7.15: Packaged 4 '.cmake' files: cjson-release.cmake, cjson.cmake, cJSONConfig.cmake, cJSONConfigVersion.cmakecjson/1.7.15@cjson/1.7.15: Packaged 1 '.pc' file: libcjson.pccjson/1.7.15@cjson/1.7.15: Package '755fc07adbed235a7d3eadec4b6882d4912f09bc' createdcjson/1.7.15@cjson/1.7.15: Created package revision 86d7c021c2a785a1b8ea1fd00af1893c

os: [‘AIX’, ‘Android’, ‘Arduino’, ‘Emscripten’, ‘FreeBSD’, ‘Linux’, ‘Macos’, ‘Neutrino’, ‘SunOS’, ‘VxWorks’, ‘Windows’, ‘WindowsCE’, ‘WindowsStore’, ‘baremetal’, ‘iOS’, ‘tvOS’, ‘watchOS’]compiler: 可能的值包括 [‘Visual Studio’, ‘apple-clang’, ‘clang’, ‘gcc’, ‘intel’, ‘intel-cc’, ‘mcst-lcc’, ‘msvc’, ‘qcc’, ‘sun-cc’]arch:可能的值包括 [‘x86’, ‘x86_64’, ‘ppc32be’, ‘ppc32’, ‘ppc64le’, ‘ppc64’, ‘armv4’, ‘armv4i’, ‘armv5el’, ‘armv5hf’, ‘armv6’, ‘armv7’, ‘armv7hf’, ‘armv7s’, ‘armv7k’, ‘armv8’, ‘armv8_32’, ‘armv8.3’, ‘sparc’, ‘sparcv9’, ‘mips’, ‘mips64’, ‘avr’, ‘s390’, ‘s390x’, ‘asm.js’, ‘wasm’, ‘sh4le’, ‘e2k-v2’, ‘e2k-v3’, ‘e2k-v4’, ‘e2k-v5’, ‘e2k-v6’, ‘e2k-v7’, ‘xtensalx6’, ‘xtensalx106’]如果要获取所有字段的可用值列表,请参考HOME/.conan/settings.yml,其中包含conan配置文件中settings允许值的默认定义。关于HOME/.conan/settings.yml,请参见 https://www.php.cn/link/59af62180b0d04edd54a5f5ace7fb433

最后,执行conan upload完成cjson/1.7.15包上传到私有制品库:

$ conan upload cjson/1.7.15 -r=privrepo --allAre you sure you want to upload 'cjson/1.7.15' to 'facelib'? (yes/no): yesUploading to remote 'privrepo':Uploading cjson/1.7.15 to remote 'privrepo'Uploading conanfile.py -> cjson/1.7.15Uploading conanmanifest.txt -> cjson/1.7.15Uploaded conan recipe 'cjson/1.7.15' to 'privrepo': http://127.0.0.1:8082/artifactory/api/conan/stableUploading package 1/1: 51dcb8c35db66a86148c7ec8052bb9971de45522 to 'privrepo'Compressing package...Uploading conan_package.tgz -> cjson/1.7.15:51dcUploading conaninfo.txt -> cjson/1.7.15:51dcUploading conanmanifest.txt -> cjson/1.7.15:51dc

登录JFrog Artifactory后,可以看到刚才上传的包。

conan入门(三):上传预编译的库(artifact)

以上就是conan入门(三):上传预编译的库(artifact)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/465901.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VSCode安装MinGW编译器 完整VSCode配置C/C++环境指南
上一篇 2025年11月8日 05:25:50
w10系统安装软件找不到指定的文件怎么办
下一篇 2025年11月8日 05:25:56

相关推荐

  • Sublime主题切换优化 Sublime快速换肤方案

    Sublime主题切换优化 Sublime快速换肤方案Sublime主题切换优化 Sublime快速换肤方案Sublime主题切换优化 Sublime快速换肤方案Sublime主题切换优化 Sublime快速换肤方案

    sublime text快速切换主题和配色方案的关键在于利用自定义快捷键绑定常用主题组合。首先,理解主题(theme)控制ui元素外观,如侧边栏、标签页等;配色方案(color scheme)负责代码编辑区域的语法高亮和背景颜色。其次,通过preferences.sublime-settings文件…

    2026年9月29日 • 用户投稿
    000
  • Linux环境下Vim编辑器工作模式解读

    Linux环境下Vim编辑器工作模式解读Linux环境下Vim编辑器工作模式解读Linux环境下Vim编辑器工作模式解读Linux环境下Vim编辑器工作模式解读

    在Linux环境下,Vim编辑器是一款功能强大的文本编辑工具,被广泛应用于程序员和系统管理员的工作中。Vim具有多种工作模式,如普通模式、插入模式、命令模式等,每种模式都有其特定的功能和用法。本文将对Vim编辑器的工作模式进行解读,并附上具体的代码示例。 一、普通模式 在Vim中,默认的模式是普通模…

    2026年9月29日 • 用户投稿
    100
  • 从 Java ArrayList 中移除指定类的第一个对象实例

    从 Java ArrayList 中移除指定类的第一个对象实例从 Java ArrayList 中移除指定类的第一个对象实例从 Java ArrayList 中移除指定类的第一个对象实例从 Java ArrayList 中移除指定类的第一个对象实例

    本文介绍了如何在 Java 的 ArrayList 中,移除指定子类 T 的第一个对象实例。通过使用 instanceof 关键字,可以有效地识别并移除目标对象,避免了创建新对象进行比较的低效方法。同时,本文也讨论了直接使用 remove(Object o) 方法可能存在的问题,并提供了更安全可靠的…

    2026年9月29日 • 用户投稿
    400
  • 如何利用MySQL和C++开发一个简单的文件加密功能

    如何利用MySQL和C++开发一个简单的文件加密功能如何利用MySQL和C++开发一个简单的文件加密功能如何利用MySQL和C++开发一个简单的文件加密功能如何利用MySQL和C++开发一个简单的文件加密功能

    如何利用MySQL和C++开发一个简单的文件加密功能 在现代社会中,数据安全是一个非常重要的问题。通过加密可以有效地保护敏感数据免受未经授权的访问。在本文中,我们将介绍如何使用MySQL和C++开发一个简单的文件加密功能。我们将通过编写相应的代码来实现这一目标。 首先,我们需要安装MySQL数据库,…

    2026年9月29日 • 用户投稿
    100
  • 苹果壁纸制作网页官方入口_苹果壁纸制作网页便捷访问

    苹果壁纸制作网页官方入口_苹果壁纸制作网页便捷访问苹果壁纸制作网页官方入口_苹果壁纸制作网页便捷访问苹果壁纸制作网页官方入口_苹果壁纸制作网页便捷访问苹果壁纸制作网页官方入口_苹果壁纸制作网页便捷访问

    苹果壁纸制作网页官方入口是https://developer.apple.com/design/resources/,该页面提供SF Symbols图标库、跨平台UI Kits、多格式文件导出及丰富设计指南,支持Figma和Sketch,适配苹果全系统设计需求。 苹果壁纸制作网页官方入口在哪里?这是…

    2026年9月29日 • 用户投稿
    000
  • 高色域屏幕是否需要色彩管理才能发挥实力?

    高色域屏幕需色彩管理才能正常工作,否则会导致色彩失真。核心是使用校色仪生成ICC配置文件,操作系统正确加载,并确保应用软件支持色彩管理,从而准确还原sRGB、Adobe RGB或DCI-P3等色域内容,避免“所见非所得”。 高色域屏幕要真正发挥其优势,色彩管理是不可或缺的。没有色彩管理,这些屏幕不仅…

    2026年9月29日
    000
  • VSCode如何管理SSH密钥 VSCode远程开发的安全连接方法

    使用ssh密钥比密码更安全高效,因其基于非对称加密且避免了暴力破解风险;2. 配置步骤包括生成密钥对、部署公钥到远程服务器、配置本地ssh config文件、启动ssh-agent并添加私钥、通过vscode remote-ssh扩展连接;3. 排查问题时需检查文件权限(如~/.ssh目录700、私…

    2026年9月29日
    100
  • Linux系统下MySQL中文乱码完美解决方法

    mysql在linux系统下出现中文乱码的主要原因是字符集设置不一致,解决方法是统一各层级的字符集配置。1. 首先通过执行show variables命令查看当前mysql服务器、数据库、数据表及字段的字符集是否为utf8或utf8mb4;2. 修改mysql配置文件/etc/my.cnf,在[my…

    2026年9月29日
    000
  • iPhone11密码怎么设置?教你快速为手机设置密码的详细方法

    设置iPhone 11密码需进入“设置”-“面容ID与密码”,选择密码类型并验证,推荐使用自定义字母数字密码以提升安全性;若忘记密码,可通过iCloud抹除或恢复模式重置,但会导致数据丢失,因此需定期备份;此外,应启用“抹掉数据”、双重认证、“查找我的iPhone”等安全功能,全面保护设备与隐私。 …

    2026年9月29日
    000
  • 国内AI软件实力排行 最新十大人工智能工具盘点

    国内AI软件实力排行 最新十大人工智能工具盘点国内AI软件实力排行 最新十大人工智能工具盘点国内AI软件实力排行 最新十大人工智能工具盘点国内AI软件实力排行 最新十大人工智能工具盘点

    国内ai软件难排名,但可依据需求选择。1.文心一格适合对图片质量要求高且偏好中文环境的用户;2.盗梦师功能新颖,细节把控好,适合追求新体验者;3.稿定设计集成ai绘画,满足简单设计需求。写作工具方面:1.秘塔写作猫擅长语法检查与逻辑优化,适合学术类写作;2.effidit提供风格润色和素材灵感,适合…

    2026年9月29日 • 用户投稿
    200
  • 如何在MySQL中使用C#编写存储过程

    如何在MySQL中使用C#编写存储过程如何在MySQL中使用C#编写存储过程如何在MySQL中使用C#编写存储过程如何在MySQL中使用C#编写存储过程

    如何在MySQL中使用C#编写存储过程 在MySQL数据库中,存储过程是一组预定义的SQL语句,可以以一定的逻辑顺序组合成一个单元的程序。它可以用于简化和优化数据库操作,并提高应用程序的性能和安全性。C#是一种广泛使用的编程语言,具有强大的数据处理能力。结合使用C#和MySQL的存储过程,能够充分利…

    2026年9月29日 • 用户投稿
    000
  • JavaFX:控制形状的层叠顺序以实现视觉效果

    JavaFX:控制形状的层叠顺序以实现视觉效果JavaFX:控制形状的层叠顺序以实现视觉效果JavaFX:控制形状的层叠顺序以实现视觉效果JavaFX:控制形状的层叠顺序以实现视觉效果

    在JavaFX应用中,控制形状的层叠顺序对于实现复杂的视觉效果至关重要。当使用toFront()方法无法达到预期效果时,可以考虑使用setViewOrder()方法。setViewOrder()允许开发者显式地设置节点的绘制顺序,数值越小,节点越靠前(即越在上层显示)。 使用setViewOrder…

    2026年9月29日 • 用户投稿
    000
  • 教你如何延长固态硬盘的使用寿命

    教你如何延长固态硬盘的使用寿命教你如何延长固态硬盘的使用寿命教你如何延长固态硬盘的使用寿命教你如何延长固态硬盘的使用寿命

    windows系统在检测到ssd后,会自动禁用碎片整理、superfetch等针对传统机械硬盘优化的功能,以更好地适配固态硬盘。然而,想要进一步延长ssd的使用寿命,关键在于正确启用trim功能。该功能可有效减少不必要的数据擦写操作,从而提升固态硬盘的耐久性。那么具体该如何设置呢?接下来就跟着黑鲨小…

    2026年9月29日 • 用户投稿
    000
  • 怎么用豆包AI帮我优化Webpack配置 用AI加速前端构建的完整指南

    使用豆包ai优化webpack配置可显著提升构建效率和输出质量,具体方法包括:1. 让豆包ai分析现有配置问题,识别缓存、代码拆分、压缩等方面的优化空间;2. 生成针对特定项目(如react)的最佳实践配置模板,涵盖代码分割、压缩插件、环境变量设置等;3. 针对具体问题(如提取css)获取完整解决方…

    2026年9月29日
    100
  • ​Meta 成立超级政治行动委员会,抗击 AI 监管政策

    ​Meta 成立超级政治行动委员会,抗击 AI 监管政策​Meta 成立超级政治行动委员会,抗击 AI 监管政策​Meta 成立超级政治行动委员会,抗击 AI 监管政策​Meta 成立超级政治行动委员会,抗击 AI 监管政策

    据 Axios 报道,Meta 公司正显著增加在政策游说方面的资源投入,宣布成立一个名为“美国技术卓越计划”(American Technology Excellence Project)的超级政治行动委员会(super PAC),并计划投入数千万美元,以应对各州可能推进的人工智能监管措施。该委员会…

    2026年9月29日 • 用户投稿
    200
  • iCloud官网怎么注册_iCloud官网新账号注册教程

    iCloud官网怎么注册_iCloud官网新账号注册教程iCloud官网怎么注册_iCloud官网新账号注册教程iCloud官网怎么注册_iCloud官网新账号注册教程iCloud官网怎么注册_iCloud官网新账号注册教程

    需通过Apple ID系统注册而非iCloud官网,访问appleid.apple.com或在设备上创建账号,填写信息、验证邮箱手机号后即可登录iCloud。 如果您尝试在iCloud官网创建一个全新的Apple账户,但找不到直接的注册入口,这是因为iCloud本身不提供独立的注册页面。您需要通过苹…

    2026年9月29日 • 用户投稿
    000
  • Linux PATH环境变量详解及配置方法

    Linux PATH环境变量详解及配置方法Linux PATH环境变量详解及配置方法Linux PATH环境变量详解及配置方法Linux PATH环境变量详解及配置方法

    Linux PATH环境变量详解及配置方法 在Linux系统中,PATH环境变量是一个非常重要的环境变量,它用于指定系统在哪些目录中查找可执行文件。通过配置PATH环境变量,可以方便地执行系统中的命令和程序。在本文中,我们将详细解释PATH环境变量的作用和配置方法,并提供具体的代码示例。 什么是PA…

    2026年9月29日 • 用户投稿
    000
  • MAC的触控板无法点击怎么办_Mac触控板物理点按失灵修复方法

    MAC的触控板无法点击怎么办_Mac触控板物理点按失灵修复方法MAC的触控板无法点击怎么办_Mac触控板物理点按失灵修复方法MAC的触控板无法点击怎么办_Mac触控板物理点按失灵修复方法MAC的触控板无法点击怎么办_Mac触控板物理点按失灵修复方法

    触控板无法点击可能由设置、硬件或电池问题引起,需逐步排查。首先检查系统设置中“轻点来点按”是否开启并调节点按力度;随后重置SMC和NVRAM以恢复硬件正常管理;接着检查电池是否鼓包导致物理挤压;再确认触控板固定螺丝是否松动需调整;最后运行Apple Diagnostics诊断是否存在硬件故障代码如T…

    2026年9月29日 • 用户投稿
    000
  • java代码怎样实现图的深度优先搜索 java代码图遍历的实用编写教程​

    java代码怎样实现图的深度优先搜索 java代码图遍历的实用编写教程​java代码怎样实现图的深度优先搜索 java代码图遍历的实用编写教程​java代码怎样实现图的深度优先搜索 java代码图遍历的实用编写教程​java代码怎样实现图的深度优先搜索 java代码图遍历的实用编写教程​

    图的深度优先搜索通过递归或栈实现,使用visited数组避免重复访问,可解决环导致的无限循环问题;DFS与BFS的区别在于搜索顺序和数据结构,DFS适用于路径查找、环检测和拓扑排序等场景。 图的深度优先搜索(DFS)在Java中可以通过递归或栈来实现,核心思想是尽可能深地搜索图的分支。简单来说,就是…

    2026年9月29日 • 用户投稿
    000
  • Sublime代码缩进设置 Sublime规范代码格式方法

    Sublime代码缩进设置 Sublime规范代码格式方法Sublime代码缩进设置 Sublime规范代码格式方法Sublime代码缩进设置 Sublime规范代码格式方法Sublime代码缩进设置 Sublime规范代码格式方法

    1.全局设置缩进规则,通过preferences->settings调整tab_size、translate_tabs_to_spaces和detect_indentation参数;2.针对不同语言配置语法专属设置;3.使用view->indentation菜单快速调整缩进;4.结合pr…

    2026年9月29日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信