vcpkg 作为子模块使用
创建一个项目demo
在项目下创建文件夹vcpkg
clone vcpkg项目到vcpkg文件夹下,并编译
Windows安装:
需求:
Windows 7 或更新的版本
Git
Visual Studio 2015 Update 3 或更新的版本(包含英文语言包)
从Github上克隆Vcpkg仓库然后执行安装命令即可:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
### Linux安装:
需求:
Git
g++ >= 6
从Github上克隆Vcpkg仓库然后执行安装命令即可:
```powershell
git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh
配置自定义文件
- 在第一个 project() 调用之前将以下内容添加到 CMakeLists.txt 中
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake
CACHE STRING "Vcpkg toolchain file")
- 在CMakeLists.txt所在目录创建vcpkg.json
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
"name": "xtcs",
"dependencies": [
{
"name": "geos",
"version>=": "3.11.2"
}
],
"overrides": [
{
"name": "geos",
"version": "3.11.2"
}
],
"builtin-baseline": "d765306b074717dea8dc1c4723e1b025acb61c2d"
}
- 在CMakeLists.txt所在目录创建vcpkg-configuration.json
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg-configuration.schema.json",
"overlay-triplets": [ "./my_triplets" ]
}
- 在vcpkg安装目录创建my_triplets文件夹及自定义的triplet文件 “x64-windows-mingw.cmake”
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_CMAKE_SYSTEM_NAME WINDOWS)
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/my_triplets/toolchains/my_mingw810-64-Qt.cmake)
- **在my_triplets文件夹下创建toolchains文件夹并创建工具链文件my_mingw810-64-Qt.cmake **
SET(CMAKE_C_COMPILER C:/QT/TOOLs/mingw810_64/bin/gcc.exe)
SET(CMAKE_CXX_COMPILER C:/QT/TOOLs/mingw810_64/bin/g++.exe)
.\vcpkg.exe install --clean-after-build --triplet=x64-windows-mingw-xtcs
4-5步目前配置成功,但是windows指定编译器无法编译通过。不指定VCPKG_CHAINLOAD_TOOLCHAIN_FILE 正常
参数 | 说明 |
---|---|
VCPKG_TARGET_ARCHITECTURE | 指定目标计算机体系结构。有效选项为 x86、x64、 armarm64 和 wasm32 |
VCPKG_CRT_LINKAGE | 指定链接所需的 CRT(仅MSVC) 有效选项为 dynamic 和 static |
VCPKG_LIBRARY_LINKAGE | 指定首选库链接。有效选项为 dynamic 和 static。 如果库不支持首选链接类型,则可以忽略此设置。 |
VCPKG_BUILD_TYPE | 可以将此值设置为 release ,以便仅生成端口的发布版本。 默认情况下,此值为空,并且会生成端口的发布和调试版本。 |
VCPKG_CMAKE_SYSTEM_NAME | 指定目标平台。有效选项包括任何 CMake 系统名称,例如:Windows 桌面为空(历史原因); WindowsStore (通用 Windows 平台); MinGW (Minimalist GNU 适用于 Windows); Darwin (Mac OSX) ;iOS (iOS);Linux (Linux);Emscripten (WebAssembly) |
VCPKG_CMAKE_SYSTEM_VERSION | 指定目标平台系统版本,此字段是可选的,如果存在,将作为 CMAKE_SYSTEM_VERSION传递 |
VCPKG_CHAINLOAD_TOOLCHAIN_FILE | 指定要使用的备用 CMake 工具链文件。此 (如果设置) 将替代所有其他编译器检测逻辑。 默认情况下,会根据 scripts/toolchains/ 平台选择工具链文件 |
VCPKG_CXX_FLAGS | 设置不使用 VCPKG_CHAINLOAD_TOOLCHAIN_FILE时要使用的其他编译器标志。此选项还包含特定于配置的表单和 C 标志:VCPKG_CXX_FLAGS; VCPKG_CXX_FLAGS_DEBUG;VCPKG_CXX_FLAGS_RELEASE;VCPKG_C_FLAGS;VCPKG_C_FLAGS_DEBUG;VCPKG_C_FLAGS_RELEASE |
VCPKG_LINKER_FLAGS | 设置在没有 VCPKG_CHAINLOAD_TOOLCHAIN_FILE的情况下生成动态库和可执行文件时要使用的其他链接器标志。 |
此选项还包含特定于配置的标志的表单:VCPKG_LINKER_FLAGS; VCPKG_LINKER_FLAGS_DEBUG; VCPKG_LINKER_FLAGS_RELEASE | |
- 使用 --overlay-triplets 生成动态库
–overlay-triplets使用 选项在 custom-triplets目录中包括triplet文件 “x64-windows-mingw.cmake”。
vcpkg/vcpkg.exe install sqlite3:x64-linux-mingw --overlay-triplets=custom-triplets