本文作者 ChungZH
部落格地址:chungzh.cn/
包管理器可以幫助你更方便地安裝依賴關係,並決定所安裝的版本,提高你的開發幸福感。許多語言都有自己的包管理器,像 Node.js 的 npm/yarn、Rust 的 Cargo、Python 的 pip 等等。當然,C/C++ 也有它自己的包管理器!下面我們就來感受下這些庫的魅力和特點吧~
1. Conan
- GitHub 專案地址:github.com/conan-io/co…
- Star 數:3k
- 文件:docs.conan.io/en/latest/
首先出場的是 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
- GitHub 專案地址:github.com/LoopPerfect…
- Star 數:600
- 文件:github.com/LoopPerfect…
這個 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
- GitHub 專案地址:github.com/microsoft/v…
- Star 數:6k
- 文件:vcpkg.readthedocs.io/
vcpkg 是由微軟爸爸開發的支援 Windows、Linux、Mac OS 的 C++ 庫管理器,解決了 Windows 下常用依賴包的管理問題!它方便與 Visual Studio 整合,你可以使用 vcpkg search
搜尋可用的包。它也可以從 Bitbucket、GitHub、GitLab 等獲取包。
安裝方法詳見 Quick Start。
4. clib
- GitHub 專案地址:github.com/clibs/clib
- Star 數:3k
- 文件:github.com/clibs/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
- GitHub 專案地址:github.com/poacpm/poac
- Star 數:341
- 文件:doc.poac.pm/en/
別看 poac 現在 stars 數量少,它其實很適合新手使用。它具有直觀且易於使用的介面(像 npm 和 Cargo 一樣)。獨特的是,你可以在不瞭解 CMake 的情況下使用 poac 開發應用程式和庫,專注於學習 C++ 而不會絆倒。作者還計劃實現與其他構建系統和包管理器的整合,讓你能夠無縫切換。
安裝也是一行命令搞定:
curl -fsSL https://sh.poac.pm | bash
複製程式碼
歡迎關注 HelloGitHub 公眾號,獲取更多開源專案的資料和內容
『講解開源專案系列』 跟著我們的文章,你會發現有趣的開源專案,從而愛上開源、愛上程式設計。加入我們、聯絡我們。讓我們一起讓更多人愛上開源、貢獻開源~