windows 上 cmake 添加 vcpkg 选项
使用 cmake 编写相关的工程时,工程有时会使用 vcpkg 添加的第三方库,比如 zip 库
查看一些案例后,我发现有些回答不太准确,遂记录下
现在,我们需要在工程中使用 zip_open 函数执行压缩命令,这个函数是 zip.h 里的,所以我们先要添加 zip 库
打开 cmd,输入 vcpkg install libzip:x86-windows-static

如果提示找不到 vcpkg 的,可以导航到【编辑系统环境变量】,【环境变量】->【系统变量】-> [PATH],添加 vcpkg.exe 路径


安装完 linzip 后,注意命令行窗口输出的提示,这个很重要

接着在 CMakeLists.txt 中添加 libizp
project(my_project)
find_package(libzip CONFIG REQUIRED)
...
add_executable(my_project ${SOURCES} ${HEADERS} ${RESOURCE_FILES})
target_link_libraries(my_project PRIVATE libzip::zip)
上面注明了先后顺序,比如 find_package 必须在 project 的后面设置,target_link_libraries 在 add_executable 后面设置
然后,在 x86 Native Tools Command Prompt for VS 2019 窗口导航到你的项目目录,如果你需要 x64,选择 x64 Native Tools 即可

为什么不直接使用 cmd 窗口输入呢?因为 cmd 窗口没有集成 msbuild 一些编译环境
最后,输入下面的 cmake 命令即可
cmake .. -DCMAKE_TOOLCHAIN_FILE=C:\Users\xxx\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static msbuild my_project.sln /p:Configuration=Release
如果提示找不到 msbuild,那就先指定绝对路径测试一下吧
# powershell 下输入
& 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild.exe' my_project.sln /p:Configuration=Release
小结:新手常常误认为直接添加 zip 库就行
比如说这样,
find_package(zip)
这样在 cmake 时,会提示找不到 zip.config,包括一些搜索结果建议你在 target_link_directories 里添加 zip_INCLUDE_DIRS 之类的头文件路径,也是不准确的
就如我上面所说,只添加两行就行,其余交给 cmake 时指定的 tool chain
windows 上 cmake 添加 vcpkg 选项的更多相关文章
- windows上redis添加密码
命令: config get requirepass config set requirepass pwd redis-server.exe redis-windows.conf. auth pw ...
- windows上memecache添加多个端口命令
sc create "Memcached Server1" start= auto binPath= "D:\01_Soft\memcached\memcached.ex ...
- (转)Windows上使用CMake
CMake简介 原文:http://blog.gclxry.com/use-cmake-on-windows/ 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软 ...
- 【KAWAKO】在windows上用CMake和MinGW编译c++工程
目录 安装CMake 安装MinGW 编写CMakeLists.txt 编译一条龙 安装CMake 在网上随便找个教程照着安装就行了,不再赘述. 安装MinGW 参考这篇博客.从MinGW官网下载的安 ...
- windows上用vs2017静态编译onnxruntime-gpu CUDA cuDNN TensorRT的坎坷之路
因为工作业务需求的关系,需编译onnxruntime引入项目中使用,主项目exe是使用的vs2017+qt5.12. onnxruntime就不用介绍是啥了撒,在优化和加速AI机器学习推理和训练这块赫 ...
- 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
今年微软Build 2016大会最让开发人员兴奋的消息之一,就是在Windows上可以原生运行Linux bash,对开发人员来说,这是一个喜闻乐见的消息. 1 安装 你必须安装开发者预览版本,才能使 ...
- 在Windows上安装MySQL(免安装ZIP版)
在 Windows 上安装MySQL(免安装ZIP版) 因为一些原因,重新安装了MySQL数据库,重装时习惯性使用最新版下载 此过程中发现MySQL 5.7.12 和MySQL 5.6的安装有些区别: ...
- 在Windows上使用Let加密IIS
在Windows上使用Let加密IIS https://weblog.west-wind.com/posts/2016/Feb/22/Using-Lets-Encrypt-with-IIS-on-Wi ...
- 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
windows(win10)批处理脚本 打开vm虚拟机的服务,并且开启无界面虚拟机 @echo off net start "vds" net start "VMAuth ...
- 在windows上安装VTK
看了很多教程,花了1天半的时间装上了,记录下. 前置条件:我安装了VS2015,用来编译工程. 参考资料 官方:http://www.vtk.org/Wiki/VTK/Building 安装:http ...
随机推荐
- [转帖]windows10彻底关闭Windows Defender的4种方法
https://zhuanlan.zhihu.com/p/495107049 Windows Defender是windows10系统自带的杀毒软件.默认情况下它处于打开的状态.大多数第三方的杀毒软件 ...
- [转帖]linux shell 中数组的定义和for循环遍历的方法
https://www.cnblogs.com/ysk123/p/11510718.html linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用 ...
- [转帖]龙叔学ES:Elasticsearch XPACK安全认证
https://juejin.cn/post/7081994919237287950 本文已参与「新人创作礼」活动,一起开启掘金创作之路. Elasticsearch往往存有公司大量的数据,如果安全不 ...
- [转帖]Shell 脚本实现应用服务日志入库 Mysql
今天给大家分享一个 shell 脚本工具,通过 shell 脚本与 mysql 的结合,将某个具体服务的错误输出日志入库到指定的 mysql 表中,以便于进行错误问题的定位与分析. 日常工作中,经常需 ...
- 【转帖】linux环境下使用route指令设置多个网络连接的优先级(通过修改路由表的默认网关条目)
1. 背景 在生活中的会经常遇见一台PC同时连接多个网络的场景.最典型的,一台笔记本可以同时连接一个无线网(手机热点)和一个有线网(以太网).linux和window操作系统在默认情况都会使用最早连接 ...
- [转帖]Steam内存测试工具【转】
转自:https://www.cnblogs.com/iouwenbo/p/14377478.html Stream测试是内存测试中业界公认的内存带宽性能测试基准工具. Stream安装 官方源码 ...
- [转帖]linux学习:sed与awk与tr用法整理
https://www.cnblogs.com/LO-gin/p/6882490.html 流编辑器:sed 语法:sed [-hnV][-e<script>][-f<script文 ...
- 行云部署成长之路--慢SQL优化之旅 | 京东云技术团队
当项目的SQL查询慢得像蜗牛爬行时,用户的耐心也在一点点被消耗,作为研发,我们可不想看到这样的事.这篇文章将结合行云部署项目的实践经验,带你走进SQL优化的奇妙世界,一起探索如何让那些龟速的查询飞 ...
- 将字符串变成数组split
字符串变成数组,常用来获取数组中我们需要的值. var str="http://op/adfie/life.png"; let arr=str.split('.'); consol ...
- 【JS 逆向百例】WebSocket 协议爬虫,智慧树扫码登录案例分析
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...