• 打包一沓开源的 C/C++ 包管理工具送给你!


    本文作者:HelloGitHub-ChungZH

    博客地址:https://chungzh.cn/

    包管理器可以帮助你更方便地安装依赖关系,并决定所安装的版本,提高你的开发幸福感。许多语言都有自己的包管理器,像 Node.js 的 npm/yarn、Rust 的 Cargo、Python 的 pip 等等。当然,C/C++ 也有它自己的包管理器!下面我们就来感受下这些库的魅力和特点吧~

    1. Conan

    首先出场的是 Conan(注意,不是柯南!),一个用 Python 编写的 C/C++ 包管理器。它是完全分散的,你可以自己托管服务器中的包。它适用于所有平台,包括 Linux、OS X、Windows、Solaris、FreeBSD、嵌入式和交叉编译、docker、WSL。它可以与任何构建系统集成,为 CMake、MSBuild、Makefiles 等工具提供了经过测试的支持。除此之外,它还获得了奔驰、华为等大公司用户。你还可以在 Conan-Center 寻找或分享你的 C/C++ 包。

    想要安装 Conan 也很简单:

    $ pip install conan
    

    2. Buckaroo

    这个 C++ 包管理器是使用 F# 语言开发的。它的独特之处就是直接从 GitHub、BitBucket、GitLab、托管的 Git 和 HTTP 中提取依赖项。同样的,它也是完全分散的,没有中央服务器。Buckaroo 使用 TOML 配置文件。

    安装方法详见 Quick Install

    它的工作流大概是这样的:

    # Create your project file
    $ buckaroo init
    
    # Install dependencies
    $ buckaroo add github.com/buckaroo-pm/boost-thread@branch=master
    
    # Run your code
    $ buck run :my-app
    

    3. vcpkg

    vcpkg 是由微软爸爸开发的支持 Windows、Linux、Mac OS 的 C++ 库管理器,解决了 Windows 下常用依赖包的管理问题!它方便与 Visual Studio 集成,你可以使用 vcpkg search 搜索可用的包。它也可以从 Bitbucket、GitHub、GitLab 等获取包。

    安装方法详见 Quick Start

    4. clib

    clib 是一个 C 包管理器(非 C++),使用起来较简单。同样的,它也可以直接从 GitHub 上安装库。类似于 Node.js,它也是用 package.json 管理的。下面是一个例子:

    {
      "name": "term",
      "version": "0.0.1",
      "repo": "clibs/term",
      "description": "Terminal ansi escape goodies",
      "keywords": ["terminal", "term", "tty", "ansi", "escape", "colors", "console"],
      "license": "MIT",
      "src": ["src/term.c", "src/term.h"]
    }
    

    5. poac

    别看 poac 现在 stars 数量少,它其实很适合新手使用。它具有直观且易于使用的界面(像 npm 和 Cargo 一样)。独特的是,你可以在不了解 CMake 的情况下使用 poac 开发应用程序和库,专注于学习 C++ 而不会绊倒。作者还计划实现与其他构建系统和包管理器的集成,让你能够无缝切换。

    安装也是一行命令搞定:

    curl -fsSL https://sh.poac.pm | bash
    


    以上就是本期全部内容,有了这些库是不是让安装 C/C++ 库变得易如反掌了呢?看完还不过瘾那就关注我们的公众号看看往期的内容吧~

    欢迎关注 HelloGitHub 公众号,获取更多开源项目的资料和内容

    『精选开源项目系列』——跟着我们的文章,你会发现有趣的开源项目,从而爱上开源、爱上编程。加入我们、联系我们。让我们一起让更多人爱上开源、贡献开源~

  • 相关阅读:
    golang语言特性
    Mysql学习之order by的工作原理
    Mysql聚合函数count(*) 的性能分析
    Mysql的刷脏页问题
    普通索引与唯一索引的选择问题
    Mysql锁的类型与简析
    深入浅出Mysql索引
    Mysql修改语句的运行流程
    Mysql查询语句的运行流程
    Go语言入门之切片的概念
  • 原文地址:https://www.cnblogs.com/xueweihan/p/11414263.html
Copyright © 2020-2023  润新知