在Mac等*nix下编译Windows动态链接库或可执行文件,常见方法是虚拟机。然而虚拟机操作不流畅,来回拷贝源码不方便。虽然虚拟机自动将宿主目录挂载为磁盘分区,但cmd实际无法cd进去:
更好的方法是直接利用Wine容器中的编译链,一边开发调错,一边编译运行。
Wine\CrossOver简介
Wine是类Unix操作系统下的Windows模拟器,CrossOver是其商业版。这里以CrossOver为例。
安装编译工具链
安装CMake
下载Cmake的binary,推荐zip包,解压就可用:https://cmake.org/download/
根据Wine的bottle的位数选择32位或64位,这里以32位为例:https://cmake.org/files/v3.9/cmake-3.9.0-rc3-win32-x86.zip
下载后解压到bottle的C盘根目录:
安装MinGW
常见的MinGW安装方法是下载GUI安装包,然后勾选所需的package手动下载。但程序员就是讨厌GUI,推荐打包好的懒人包:http://www.hankcs.com/program/cpp/jetbrains-clion.html
下载后解压到C盘根目录:
配置环境变量
需要将两者的bin文件夹添加到path中。具体做法是在bottle中运行命令:
regedit
展开如下路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
在PATH键后面的值中增加CMake和MinGW的bin路径:
;C:\MinGW\bin;C:\cmake-3.9.0-rc3-win32-x86\bin
如图所示:
编译
接下来就可以打开cmd,cd到源码的目录,执行:
mkdir build cd build cmake .. -G "MinGW Makefiles" mingw32-make
进行编译了:
如果嫌Wine的console太丑了,可以将日志重定向到文件:
mingw32-make 1>build.log 2>&1
然后利用Mac的控制台.app来查看精美的日志:
编译后在build目录下得到dll和exe:
exe可以直接在Wine中运行:
拖到Windows上去,也可以运行:
知识共享署名-非商业性使用-相同方式共享:码农场 » 在Wine或CrossOver中利用CMake和MinGW交叉编译
可以cd进去,直接输入盘符X:就可以了