windows下,mingw编译SimpleAmqpClient
一、关系
1、SimpleAmqpClient依赖于Boost,所以先下载编译Boost,下载地址:https://www.boost.org/users/history/
2、SimpleAmqpClient是rabbitmq-c的C++开发封装,所以先下载rabbitmq-c,下载地址:https://github.com/alanxz/rabbitmq-c
3、SimpleAmqpClient下载地址:https://gitcode.net/mirrors/alanxz/SimpleAmqpClient。
4、编译rabbitmq-c和SimpleAmqpClient需要用到cmake,所以先安装cmake,本次编译使用的是3.22.0版本。
二、编译Boost
以Boost1.69.0为例,解压到E:/opensource/rabbitmq/src/boost_1_69_0,在开始菜单栏时找到Qt5.9.8下面的Qt 5.9.8(MinGW 5.3.0 32-bit),打开弹出如下窗口
定位到E:/opensource/rabbitmq/src/boost_1_69_0/tools/build/src/engine
输入命令:build.bat gcc,在当前目录将会生成bin.ntx86文件夹,里面包含两个exe文件b2.exe,bjam.exe
将bin.ntx86\bjam.exe拷贝到E:\opensource\rabbitmq\src\boost_1_69_0目录下,输入命令->cd ../../../..,进入boost_1_69_0目录下
输入命令->bjam.exe --help,可以查看编译选项,以下介绍几个重要选项:
类型 | 可选项 | 说明 |
---|---|---|
targets | install | 复制include头文件夹和生成lib库文件夹。 |
targets | stage | 只生成lib库文件夹。由于include文件夹复制于Boost根目录的boost文件夹,因此可以直接使用boost文件夹。 |
options | –prefix | 以install方式编译时,指定与体系结构无关的文件存放目录。默认为C:\Boost。 |
options | –exec-prefix | 以install方式编译时,指定依赖于体系结构的文件存放目录。默认与–prefix相同。 |
options | –libdir | 以install方式编译时,指定库文件存放位置。默认为–prefix指定目录的lib文件夹。 |
options | –includedir | 以install方式编译时,指定头文件存放位置。默认为–prefix指定目录的include文件夹。 |
options | –stagedir | 以stage方式编译时,指定输出库目录。默认在Boost根目录生成stage文件夹,存放lib文件。 |
options | –build-type | 编译方式,默认最小编译,可以指定全编译。可选minimal/complete。 |
options | –build-dir | 编译产生的中间文件存放位置。默认于Boost根目录生成bin.v2文件夹,存放中间文件,在Boost编译完成之后可以删除。 |
options | –show-libraries |
展示需要构建和安装的Boost库列表。 - atomic - chrono - container - context - coroutine - date_time - exception - filesystem - graph - graph_parallel - iostreams - locale - log - math - mpi - program_options - python - random - regex - serialization - signals - system - test - thread - timer - wave |
options | –help | 介绍b2的使用方法和参数含义。 |
options | –with | 只编译指定库。 |
options | –without | 不编译指定库。 |
properties | toolset | 指定编译器版本,若不指定则自动搜索本地可用编译器。 |
properties | variant | 指定编译版本。可选debug/release,默认编译二者。 |
properties | link | 指定生成库为静态库或者动态库。可选static/shared。 |
properties | runtime-link | 指定运行时静态链接或者动态链接其他库。可选static/shared,默认编译二者。 |
properties | threading | 指定生成库为单线程或者多线程。可选single/multi,默认是multi。 |
SimpleAmqpClient只用到了Boost的chrono和system两个库,为了节约时间,输入命令:bjam.exe stage toolset=gcc --with=chrono --with=system link=shared runtime-link=shared threading=multi,编译完后在C:/Boot/lib生成库文件,将Boost文件夹剪切到E:/opensource/rabbitmq/目录下,将E:/opensource/rabbitmq/src/boost_1_69_0/boost文件夹拷贝到E:/opensource/rabbitmq/Boost目录下
三、编译rabbitmq-c
解码至E:/opensource/rabbitmq/src/rabbitmq-c-master,在E:/opensource/rabbitmq/src/rabbitmq-c-master里创建build文件夹,打开cmake工具并设置Source和Build路径
点击“Configure”,弹窗选择“MinGW Makefiles”
提示错误
设置mingw32-make.exe路径
点Configure,弹出更多配置选项
Ungrouped Entries
ENABLE_SSL_SUPPORT:去勾
EUN_SYSTEM_TESTS:去勾
BUILD
BUILD_SHARED_LIBS:勾选,其它去勾
CMAKE
CMAKE_INSTALL_PREFIX:E;/opensource/rabbitmq/rabbitmq-c
设置好后,再Configure,提示:Configuring done
点Generate,显示Generating done
这里在E:/opensource/rabbitmq/src/rabbitmq-c/build目录下生成Makefile文件,在开始菜单栏时找到Qt5.9.8下面的Qt 5.9.8(MinGW 5.3.0 32-bit),打开弹出如下窗口
定位到E:/opensource/rabbitmq/src/rabbitmq-c-master/build,
输入命令:mingw32-make,开始编译
输入命令:mingw32-make install,开始安装
安装完后,在E:/opensource/rabbitmq/rabbitmq-c下生成bin,lib,include,分别是程序运行动态链接库librabbitmq.4.dll、程序开发引用库librabbitmq.4.dll.a和头文件
四、编译SimpleAmqpClient
打开E:/opensource/rabbitmq/src/SimpleAmqpClient-master/CMakeLists.txt,添加 c++11 支持
- set(CMAKE_CXX_STANDARD 11) # C++11...
- set(CMAKE_CXX_STANDARD_REQUIRED ON) #...is required...
- set(CMAKE_CXX_EXTENSIONS OFF) #...with compiler extensions like gnu++11
编译SimpleAmqpClient和编译rabbitmq-c类似,解码SimpleAmqpClient到E:/opensource/rabbitmq/src/SimpleAmqpClient-master,并在SimpleAmqpClient-master下创建build文件夹,打开cmake,设置Source和build路径,
点击Configure,设置CMAKE_MAKE_PROGRAM路径至C:/Qt/Qt5.9.8/Tools/mingw530_32/bin/mingw32-make.exe
点击Configure,设置Boost头文件和库的路径
点击Configure,设置Rabbitmqc头头文件和库的路径
其它设置
BUILD
BUILD_SHARED_LIBS 勾选
ENABLE
ENABLE_SSL_SUUPRT 去勾
ENABLE_TESTING 去勾
CMAKE
CMAKE_INSTALL_PREFIX E:/opensource/rabbitmq/SimpleAmqpClient
选项都设置完,再点击Configure,提示Configuring Done,再点击Generate,提示Generating Done,这时在build文件夹生成了Makefile文件
在开始菜单栏时找到Qt5.9.8下面的Qt 5.9.8(MinGW 5.3.0 32-bit),打开弹出如下窗口
定位到E:/opensource/rabbitmq/src/-c-master/SimpleAmqpClient-master/build,
输入命令mingw32-make,启动编译
输入命令:mingw32-make install,启动安装
安装完后,在E:/opensource/rabbitmq/SimpleAmqpClient目录下生成了bin、lib、include,分别为程序运行动态链接库libSimpleAmqpClient.7.dll、程序开发引用库libSimpleAmqpClient.7.dll.a和程序开发引用头文件。