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

文章目录

  • 故事背景
  • 一、开发环境准备
  • 二、编译过程
    • 1.编译yaml-cpp
    • 2.编译程序
  • 总结


故事背景

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放置在同一级目录下便可运行

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


总结

先下班

你可能感兴趣的:(c++,git,visualstudio,windows)