# 套件管理工具(vcpkg)
###### tags: c/c++, 套件管理
## 進階應用
1. 使用json 方式來進行控管
```
{
"name": "atlagent",
"version": "1.0.0",
"builtin-baseline": "d10d511f25620ca0f315cd83dcef6485efc63010",
"dependencies": [
"cpp-httplib","nlohmann-json"
],
"overrides": [
{
"name": "cpp-httplib", "version": "0.11.2"
},
{
"name": "nlohmann-json", "version": "3.11.3"
}
]
}
```
2. 然後在此目錄用cmd執行
```
vcpkg install
```
3. 從安裝路徑引入lib跟.h
4. 確認可以執行後即可
5. 後續可以一併把庫推上git
## 已知缺點
1. 僅能安裝最新版本套件
2. 要安裝不同版本的,要用git 指令查詢指定套件版本的推送紀錄,接著切到那個版本的branch
3. static lib 有時候要去vcproj檔調整全域設定,[參考](https://levelup.gitconnected.com/how-to-statically-link-c-libraries-with-vcpkg-visual-studio-2019-435c2d4ace03)
## 流程(vcpkg)
1. [vcpkg](https://github.com/microsoft/vcpkg)
2. 安裝方式:
```
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
```
3. 設置到環境變數

4. 查詢需要的package
```
vcpkg search cpp-httplib
```
5. 安裝需要的package
```
vcpkg install cpp-httplib
(安裝x64版本用以下指令)
vcpkg install cpp-httplib:x64-windows
(安裝x86-static)
vcpkg install cpp-httplib:x86-windows-static
```

6. 連動至visual studio
```
(方法一,全域)
vcpkg integrate install
(方法二,僅某個專案)
vcpkg integrate project
```
7. (方法一)若成功,直接跳

8. (方法二)

專案->管理Nuget套件
右上角設定

更改來源與名稱

檢查nuget是否設定成功
工具->Nuget 套件管理器->套件管理器主控台
9. 檢查是否有連動
