vcpkg c++包管理器
在Windows下开发C++程序时,常用依赖包的管理是一个头疼的问题。Vcpkg是一个命令行包管理工具,它可以极大地简化三方库的获取、安装、使用和部署流程。
相关网址
windows安装vcpkg
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
Linux安装vcpkg
git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh
// ps:记得需要先安装 curl zip unzip tar包
常用指令
vcpkg list // 查看本地已安装包列表
vcpkg install [package name] // 安装包,安装32位
vcpkg install [package name]:x64-windows // 安装包,安装64位
vcpkg search [package name] // 根据片段搜索包
vcpkg remove [package name] // 卸载包
vcpkg integrate install // 使已安装包在用户范围内可用。 首次使用时需要管理权限
vcpkg integrate remove // 删除用户范围的集成
使用方式
官方推荐我们将vcpkg作为项目的子模块进行引入,即在项目的目录下进行安装项目本地的vcpkg包。
├── CMakeLists.txt
├── main.cxx
└── vcpkg // vcpkg本地子模块项目
在cmake中使用vckpg的包
cmake_minimum_required(VERSION 3.5)
# 要在开头project之前设置CMAKE_TOOLCHAIN_FILE这样就能够使用vcpkg的包
set(CMAKE_TOOLCHAIN_FILE "D:/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
project(cmake_vcpkg LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Drogon CONFIG REQUIRED)
add_executable(cmake_vcpkg main.cpp)
install(TARGETS cmake_vcpkg LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
target_link_libraries(${PROJECT_NAME} PRIVATE Drogon::Drogon)
国内安装GitHub工具库时,因为墙的原因许多库都很容易安装失败。安装失败就多安装几次,不行就开个VPN进行安装把。
当然在很多时候按照上面的设置光是配置CMAKE_TOOLCHAIN_FILE变量会发现查找不到正确的包,在这个时候我们需要手动引入vcpkg.cmake进行包含。
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 17)
# 设置工具链
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
# 手动加入vcpkg.cmake 子模块
include(${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake)
find_package(Drogon CONFIG REQUIRED)
project(web LANGUAGES CXX)
add_executable(${PROJECT_NAME} main.cxx)
target_link_libraries(${PROJECT_NAME} PRIVATE Drogon::Drogon)