【Windows】通过VS打包CMake工程发布exe


故事背景

host:Linux,guest:Windows

平常工作环境为Linux(VS Code),该项目需要发布为exe以支持Windows(VS)使用,即将CMake项目转换成sln项目,并适配Windows下的环境


一、开发环境准备

依赖:OpenCV、yaml-cpp、Git、CMake、VS、VBox

【均为官网】

Win10 ISO:https://www.microsoft.com/zh-cn/software-download/windows10ISO
VBox:https://www.virtualbox.org/wiki/Linux_Downloads
Visual Studio:https://visualstudio.microsoft.com/vs/older-downloads/
Git:https://git-scm.com/download/win
CMake:https://cmake.org/download/
OpenCV:https://opencv.org/releases/
yaml-cpp:https://github.com/jbeder/yaml-cpp

注:除yaml-cpp之外均可直接下载安装程序

二、编译过程

除yaml-cpp外均默认安装即可,至此,已在VBox中创建了Win10虚拟机并安装了Visual Studio、Git、CMake以及OpenCV
有多种编译方式,本文采用最懒狗的纯命令行方法,不使用GUI,不配置环境变量

1.编译yaml-cpp

与Linux编译类似,通过git clone拉取yaml-cpp源码,新建build,注意CMake命令为

cmake -DYAML_BUILD_SHARED_LIBS=ON -A x64 -G "Visual Studio 15 2017" ..

-DYAML_BUILD_SHARED_LIBS=ON为编译动态库选项,默认为OFF,即默认编译静态库
-A x64,默认为Win32
-G "Visual Studio 15 2017"为编译目标平台,必填

编译完成后,在build文件夹内会生成sln项目文件,打开后可在VS中选择Debug或Release模式,右键ALL_BUILD生成,即可在对应模式文件夹内生成yaml-cpp.libyaml-cpp.dll

2.编译程序

与编译yaml-cpp类似,通过git clone拉取项目源码,新建build,CMake命令为

cmake -G "Visual Studio 15 2017" -A x64 ..

使用Linux环境下的CMakeLists.txt预期会报错,因为环境不同,find_package()命令大概率找不到所需的库,以本项目为例OpenCV及yaml-cpp均需手动配置

配置OpenCV,仅需在find_package()前加一句

set(OpenCV_DIR "G:/opencv/build/x64/vc14/lib")

配置yaml-cpp,由于在Windows下没有make install,直接摈弃原有配置,重新配置如下

include_directories("G:/yaml-cpp/include")
link_directories("G:/yaml-cpp/build/Release")
target_link_libraries(project
	yaml-cpp.dll
)

配置完成后使用CMake命令编译即可,同样会在build内生成sln程序,打开后选择Release模式,直接右键项目生成对应exe,将所需的dll与exe放置在同一级目录下便可运行

大概会遇到些语法问题,针对性修改即可


总结

先下班

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝉鸣居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值