这几天使用apache qpid,网上关于在windows下的编译过程几乎没有,自己编译时候也废了点功夫,现记录以飨他人。
首先,可以确定的是qpid确实支持windows平台的。但是编译过程类似与linux编译过程,需要再次生成一次工程才能形成windows下的sln文件
第一步:准备环境,需要安装的软件如下:
1.ruby
2.python
3.cmake
4.boost
1.2项是用来再次生成工程用的,以后并不使用
3项是必要的,qpid是个cmake工程,符合发展趋势的
4项是编译必要的函数库,也建议devs都能使用,boost编译过程网上一大把,很容易编译
第二步:解压出qpid-cpp-0.28文件夹,注意,应当形成这样的文件夹树:
---任意文件夹名,例如qpid-cpp
-------qpid-cpp-0.28
-------cpp//自建的文件夹,必须要这个名字
之后把qpid-cpp-0.28下的所有东西复制到cpp文件夹下。
第三步:win+r powershell,把qpid-cpp-0.28文件夹下的bld-winsdk.ps1文件拖进powershell,并加上参数:boost路径+空格+boost版本,例如1.53.0+空格+vs2010之类的+编译版本,x86或者x64,具体如下
之后会出现大堆的编译信息,不用管,最后会在qpid-cpp文件夹同层析目录树生成一个文件夹,名叫:
编译版本,x86或者x64+vs2010之类的,例如x86-vs2010,该目录下就是sln文件了,如果设置了denev的路径的话,就会自动编译的
该文件夹下的文件示例:
编译中可能问题:
1.个人编译boost后库路径根据个人喜好可能导致cmake找不到boost库位置,编译中可能提示:
这个错误我按照提示设置后好像没有效果,我采用了另一种办法,使用ue打开cpp/src/CMakeLists.txt 288行,
find_package(Boost ${Boost_minversion} REQUIRED COMPONENTS ${Boost_components})
改成
set(Boost_LIBRARY_DIRS "F:/BOOST/lib") #find_package(Boost ${Boost_minversion} REQUIRED COMPONENTS ${Boost_components})
当然,具体的路径要看个人爱好修改,这样修改后就没问题了。
另外,跟这个相关的openmama项目,是部分有名的mq的一个高层抽象,用来屏蔽不用mq的函数差异,结合起来使用应该更加好一下把。
openmama是nyse开源出来的项目,具体的效果看官网上应该不错,需以验证。
Apache QPID windows vs2010编译