c++的包管理是一大痛点,以前如果要手动放入一个库,需要手动把源码拷贝过来,但是如果这个库又依赖很多其它的库,那就没办法了,
1. Conan
https://docs.conan.io/2/tutorial/consuming_packages.html
1.1 安装
Windows 下要以管理员运行(需要python3)
pip install conan -i https://mirrors.aliyun.com/pypi/simple/
查看有没有效
如果是linux中没有效,需要手动执行一下
source ~/.profile
1.2 使用
官方示例代码
git clone https://github.com/conan-io/examples2.git
1.2.1 conanfile.txt
[requires]
zlib/1.2.11
[generators]
CMakeDeps
CMakeToolchain
1.2.2 编译配置
还需要生成一个系统的全局配置(只需要操作一次)
conan profile detect --force
默认是生成在 /profiles folder, located in the Conan user home
如果你有多个配置,可以在通过--profiler=来指定
比如,可以指定一个debug
1.2.3 安装库
conan install . --output-folder=build --build=missing
1.3 编译代码
1.3.1 方法1:
$ cd build
$ cmake .. -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"
$ cmake --build . --config Release
或者
cmake --build . --config Debug
1.3.2 式2:
Use cmakepresets
$ cmake --preset conan-default
$ cmake --build --preset conan-debug
$ build\Debug\foo.exe
foo/1.0: Hello World Release!
$ cmake --build --preset conan-release
$ build\Release\foo.exe
foo/1.0: Hello World Release!
1.4 库中心地址
https://conan.io/center
1.5 问题
1、库安装后,vstudio和vscode都无法找到库的头文件。导致无法代码提示
2. Vcpkg
https://github.com/microsoft/vcpkg
官方文档:https://learn.microsoft.com/zh-cn/vcpkg/get_started/get-started?pivots=shell-powershell
vcpkg是windows为c++设计的包管理工具
2.1 安装
## 1. 克隆 vcpkg
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
## 2. 运行引导脚本
.\bootstrap-vcpkg.bat
## **加环境变量**
$env:VCPKG_ROOT = "C:\path\to\vcpkg"
$env:PATH = "$env:VCPKG_ROOT;$env:PATH"
因为vcpkg很多库是从github上下载,需要vpn,如何加速,设置windows系统代理
2.2 配置项目
2.2.1 初始化
在项目目录下
vcpkg new --application
就会生成
2.2.2 添加库
vcpkg add port fmt
2.2.3 配置cmake
针对cmake,需要新建CMakePresets.json
{
"version": 2,
"configurePresets": [
{
"name": "vcpkg",
"generator": "Visual Studio 17 2022",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
}
}
]
}
CMakeUserPresets.json
JSON复制
{
"version": 2,
"configurePresets": [
{
"name": "default",
"inherits": "vcpkg",
"environment": {
"VCPKG_ROOT": "<path to vcpkg>"
}
}
]
}
CMakePresets.json
文件包含一个名为“vcpkg”的预设,用于设置 CMAKE_TOOLCHAIN_FILE
变量。 CMakeUserPresets.json
文件会将 VCPKG_ROOT
环境变量设置为指向包含 vcpkg 本地安装的绝对路径。 建议不要将 CMakeUserPresets.json
签入版本控制系统。
配置cmake
cmake --preset=default
编译
cmake --build build
2.2.4 其它
2.2.4.1
2.2.4.2 指定版本
2.2.4.2.1 先要给你的所有库添加基线
vcpkg x-update-baseline --add-initial-baseline
更新基线
若要更新清单中的基线,请使用 [vcpkg x-update-baseline](https://learn.microsoft.com/zh-cn/vcpkg/commands/update-baseline)。
然后再指定版本
"overrides": [
{
"name": "ffmpeg",
"version": "5.1.2"
}
],
这操作有点怪哈
2.3 总结
优点:添加库后,库可以直接在代码提示中使用