为啥要写二进制编译 exe程序,CMake minGW练习教程?
前阵子,研究了一下electron
,想开发一款离线图片压缩桌面程序。写的过程中发现程序在,windows环境下运行没问题,但是在linux 和 macOS会有问题。经常排查发现是node依赖的第三方插件问题(只给了 exe程序)。
所以开始着手研究,如何通过 c++之类的源码,编译出分别对应 Wndows Linux MacOS的二进制应用程序。
经过一周的时间查阅大量的资料(google),最终得出下面的流程。
现在只是学会了,编译Linux 和windows的应用程序,但是我想要是 在一个系统环境下分别编译出Windows Linux MacOS。目前只接触到了 交叉编译
这个东西。正在着手学习,摸索出完整无坑的流程再继续发相关文章。
工具准备
OS: windows 10
CMake: https://cmake.org/
Visual Studio 2019: https://visualstudio.microsof...
下载 libpng-1.6.35 源码 Download the libpng-1.6.35 source code
libpng: https://github.com/glennrp/li...
解压 libpng-1.6.35.tar.gz
directory
|-libpng-1.6.35
打开 zlib.props 文件,查看依赖zlib的版本
libpng > projects -> vstudio -> zlib.props
line 34 <ZLibSrcDir>..\..\..\..\zlib-1.2.8</ZLibSrcDir>
下载 zlib-1.2.8 源码 Download the zlib-1.2.8 source code
zlib : https://github.com/madler/zli...
解压 zlib-1.2.8.tar.gz
directory
|-libpng-1.6.35
|-zlib-1.2.8
编译 zlib-1.2.8
- 打开 CMake gui
- 点击 Browse Source 选择 zlib-1.2.8
- 点击 Browse Build 选择 zlib-1.2.8/build 目录
- 点击 Configure(生成CMake Cahce) 选择 Visual Studio
- 和 x64点击 Finish 等待输出消息 Configuring done
- 点击 Generate(生成Visual Studio的*.sln) 等待输出消息 Generating done
- 点击 Open Project,会在 Visual Studio
- 中打开
生成debug版的静态链接库。
(1). 确认解决方案为debug、X64平台。 (2). 在zlibstatic项目上右击–>生成 等待 输出窗口提示生成成功 (2个) (3). zlib的debug、X64版的静态链接库已经编译成功。 ![5.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3280b06039684e1da05855fdd2c762c4~tplv-k3u1fbpfcp-watermark.image)
生成release版的静态链接库。
(1). 确认解决方案为release、X64平台。 (2). 在zlibstatic项目上右击–>生成 等待 输出窗口提示生成成功 (2个) (3). zlib的release、X64版的静态链接库已经编译成功。
最重要的一步 复制 zlib-1.2.8/build/zconf.h 文件到 zlib-1.2.8/
编译 libpng-1.6.35
- 打开 CMake gui
- 点击 Browse Source 选择 zlib-1.2.8
- 点击 Browse Build 选择 zlib-1.2.8/build 目录
勾选 Advanced, 修改 ZLIB_INCLUDE_DIR,ZLIB_LIBRARY_DEBUG、ZLIB_LIBRARY_RELEASE 后点击 Configure
ZLIB_INCLUDE_DIR C:\c++\zlib-1.2.8 ZLIB_LIBRARY_DEBUG C:\c++\zlib-1.2.8\build\Debug\zlibstatic.lib ZLIB_LIBRARY_RELEASE C:\c++\zlib-1.2.8\build\Release\zlibstatic.lib
- 单击 Generate,生成Visual Studio 2019的*.sln项目。
- 点击 Open Project,会在 Visual Studio 2019 中打开
- 在Visual Studio 2019中分别以Debug和Release方式编译
png_static
项目。
编译 mozjpeg-4.0.3
没有前置依赖 按上面的流程即可
我想用 minGW 怎么编译?
- 在 CMake gui 中,点击 Configure ,选择 “MinGW Makefile” 等待 Configuring done
- 点击 Generate 等待 Generate done
- 打开 cmd,执行命令
cd C:\c++\zlib-1.2.8\build\
- 执行 minGW32-make (每个安装的minGW make命令可能不一样 自行选择即可)
编译出来的 exe我单独复制出来不能怎么回事?
因为 应用程序 需要依赖 某个dll,将这个dll 放在和exe程序同一位置即可
Built on
- Github
- libpng: libpng is the official PNG reference library.
- zlib: ZLIB DATA COMPRESSION LIBRARY
- mozjpeg: MozJPEG improves JPEG compression efficiency achieving higher visual quality and smaller file sizes at the same time.
- CMake: CMake is an open-source, cross-platform family of tools designed to build, test and package software.
- Visual Studio 2019:A full-featured IDE that can be used to code, debug, test, and deploy to any platform.
- minGw:Mingw-w64 is an advancement of the original mingw.org project, created to support the GCC compiler on Windows systems.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。