惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
D
Docker
罗磊的独立博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
IT之家
IT之家
MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog

Louis C Deng's Blog

RoPE: Properties, Patterns, and Long-Context Behavior CS336 Assignment 1: Large Language Model Training and Inference CS231n Lecture Note: Generative Models CS231n Lecture Note: Self-Supervised Learning CS231n Lecture Note: Large Scale Distributed Training 自動微分 | DIY 實現自己的 PyTorch From RNNs to Transformers CS231n Lecture Note VII: Recurrent Neural Networks Uncovering Batch & Layer Normalization CS231n Lecture Note VI: CNN Architectures and Training CS231n Lecture Note V: Convolution Neural Networks Basics Demystifying Softmax Loss: A Step-by-Step Derivation for Linear Classifiers Backpropagation: A Vector Calculus Perspective CS231n Lecture Note IV: Neural Networks and Backpropagation CS231n Lecture Note III: Optimization CS231n Lecture Note II: Linear Classifiers CS231n Lecture Note I: Image Classification CSAPP Cache Lab II: Optimizing Matrix Transposition CSAPP Cache Lab I: Let's simulate a cache memory! CS188 Search Lecture Notes III CS188 Search Lecture Notes II How to Use TouchID for Sudo Commands on macOS CS188 Search Lecture Notes I RECAP2025: 留白 CSAPP Bomb Lab 解析 x64 暫存器速查表 CSAPP Data Lab 解析 矩陣的 Modified Gram Schmidt 方法 聊一聊位掩碼(Bit Mask) 整數溢位與未定義行為
vcpkg - 方便的 C/C++ 庫管理器
Louis C Deng · 2020-08-14 · via Louis C Deng's Blog

最近在做一個大型的 C++ 專案 ── Albumist。它使用 Qt,需要用到很多類似 sqlite3exiv2libcurl 之類的庫。第三方庫管理似乎成了問題。

支援 git 的都可以使用 git submodule 來管理,但是還有少部分是不支援的,或者是二進位制的,比如 sqlite3。這就要我們手動去下載,手動去更新,好生麻煩。

vcpkg

我一直想要一個類似 npm pip 一樣的東西,把依賴寫在檔案裡面,然後直接 install 即可。

經過搜尋,我發現了微軟的一個專案 vcpkg。官方定義它為 “C++ Library Manager for Windows, Linux, and MacOS”,簡單翻譯一下就是 “支援 Windows, Linux 和 macOS 的 C++ 庫管理器”。

在 Arch Linux 上面,安裝它並不複雜,只需要:sudo pacman -S vcpkg-git 即可。其他系統沒有嘗試過,跟著它的 README 也很方便安裝。

“清單” 功能

在專案根目錄建立一個 vcpkg.json, 然後 vcpkg install。這一功能就是“清單”功能。它正好是我想要的,可是卻暫時處在 Beta 階段,不過也無關緊要。

要啟用“清單”功能,在執行命令時,需要接引數 --feature-flags = manifests

清單大概長這樣:

1
2
3
4
5
6
7
8
{
"name": "<name of your project>",
"version-string": "<version of your project>",
"dependencies": [
"abseil",
"boost"
]
}

很方便,也很快捷。

不足

比起這樣一個純粹的管理器,我更希望獲得類似 Java 的 Gradle 的體驗。如果 CMake 能加入類似功能,體驗一定能夠翻倍,快捷方便且無需第三方軟體。

後記

— 2020 08 15 更新

又停止使用這個東西了,Windows 上面需要 MSVC。。。