1.安装msys2,修改安装目录下msys2.ini,mingw32.ini,mingw64.ini三个文件
MSYS2_PATH_TYPE=inherit
忘了默认有没有带这个参数了,有就改成inherit,没有就加一行,这个用来引用windows的环境变量设置到msys2中。
三个文件的关系不是很清楚,看起来应该是mingw32.ini设置32位环境,mingw64.ini设置64位环境,特定环境没有的设置继承msys2.ini的设置,一般都是这种关系,没验证,为了省事就都设上了
2.windows安装对应的Qt Mingw版本,我因为要在Qt环境中使用,不用Qt的可以自行单独安装Mingw编译器,高版本的Qt自带了Mingw编译器。将安装的64位mingw编译器所在的bin目录加入windows环境变量中。
3.运行msys2中mingw64.exe启动64位命令行,执行
pacman --needed -S bison flex make mingw-w64-x86_64-openssl \
mingw-w64-x86_64-boost mingw-w64-x86_64-cmake \
mingw-w64-x86_64-zlib mingw-w64-x86_64-libevent
安装依赖包,不用带mingw-w64-x86_64-toolchain,因为我们要用自己制定版本的mingw编译器
4.下载thrift源码,解压,切换到源码目录,执行以下命令生成makefile
mkdir ../thrift-build
cd ../thrift-build
cmake -G"MinGW Makefiles" -DCMAKE_MAKE_PROGRAM=/mingw64/bin/mingw32-make \
-DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc.exe \
-DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++.exe \
-DWITH_LIBEVENT=ON\
-DWITH_SHARED_LIB=ON -DWITH_STATIC_LIB=ON \
-DWITH_JAVA=OFF -DWITH_PYTHON=OFF -DWITH_PERL=OFF \
../thrift
此处设置与官网推荐不同,官网上DWITH_LIBEVENT和DWITH_SHARED_LIB都是设成OFF的,可能当时msys编译环境还不完善,无法编译通过,不过目前已经都可以编译通过了
5.继续执行
cmake --build .
耐心等待即可编译完成,编译结束后可在lib目录找到编译结果库文件
6.如果要编译32位版的,需将32位版的mingw编译器所在目录加入windows环境变量,启动32位版msys命令行运行环境,同时第三部安装依赖包的命令换成一下内容,重复4-5步即可
pacman --needed -S bison flex make mingw-w64-i686-openssl \
mingw-w64-i686-boost mingw-w64-i686-cmake \
mingw-w64-i686-zlib mingw-w64-i686-libevent