构建 ActiveMQ-CPP
依赖项
libuuid
在 *nix 系统上,构建需要 libuuid 库,该库是 e2fsprogs 包的一部分,可从 http://e2fsprogs.sourceforge.net/ 获取,该库通常未默认安装。
在 Fedora/Red Hat/openSUSE 上,您应该安装 e2fsprogs 和 e2fsprogs-devel 包。在 Debian/Ubuntu 上,您应该安装 uuid 和 uuid-dev 包。
CppUnit
该包包含一整套 CppUnit 测试。为了构建并运行测试,您需要下载并安装 CppUnit 库。参见 http://cppunit.sourceforge.net/cppunit-wiki
在 Fedora/Red Hat/openSUSE 上,您应该安装 cppunit 和 cppunit-devel 包。在 Debian/Ubuntu 上,您应该安装 build-essential、libcppunit 和 libcppunit-dev 包。
在尝试构建测试之前,请确保在当前 shell 中可以看到已安装的 CppUnit 库和包含文件的路径。
Windows 用户需要使用 CppUnit MSVC 项目文件构建 CppUnit 库。有关构建过程的讨论,请参阅 CppUnit wiki 上的 CppUnit 构建说明,其中涵盖了 MSVC 以及许多其他平台和工具套件。
APR
在 ActiveMQ-CPP 2.2 及更高版本中,我们依赖于 Apache Portable Runtime 项目。您需要在系统上安装 APR,然后才能构建 ActiveMQ-CPP。
Windows Vista/MSVC++ 2008 用户注意事项
Vista SDK 引入了 APR 的一些构建问题。作为解决方法,请按照 此处 的说明操作。
在 *nix(Unix/Linux/OS X/Cygwin)上构建
GNU 构建系统(用于在 *nix 上构建)
要生成用于创建 Makefile 的 ./configure 脚本,您需要安装以下软件
工具 | 推荐版本 |
---|---|
autoconf | >= 2.59 |
automake | >= 1.9.6 |
libtool | >= 1.5.22 |
如果您想以 HTML 格式生成 API 文档,还可以安装 Doxygen 和 Graphviz 包。
构建
假设您已安装所有项目依赖项。现在我们可以创建配置脚本。为此,请运行
./autogen.sh
运行此命令时,您可能会看到以下警告
src/test-integration/Makefile.am:44: 'CXXFLAGS' is a user variable, you should not override it; src/test-integration/Makefile.am:44: use 'AM_CXXFLAGS' instead. src/test/Makefile.am:104: 'CXXFLAGS' is a user variable, you should not override it; src/test/Makefile.am:104: use 'AM_CXXFLAGS' instead.
这些警告可以忽略。我们会在 makefile 中为单元测试和集成测试覆盖 CXXFLAGS
,以抑制编译器警告。
应在第一次运行此命令以及每次更改 configure.ac 或任何 Makefile.am 文件时运行此命令。
Solaris 10 说明
在您更正 libstdc++.la 文件以包含正确数据之前,CppUnit 可能无法构建,请参阅以下讨论。
配置脚本将自定义软件在系统中构建和安装的方式,以及检测已安装的可用库。要使用默认配置,只需运行
./configure
有关如何自定义构建配置的更多帮助,请运行
./configure --help
配置脚本成功运行后,您就可以构建了。运行
make
这将构建所有核心 ActiveMQ CPP 源代码。要构建并将代码安装到系统目录,请运行
您需要成为超级用户才能安装文件。
Doxygen
要为项目生成 doxygen 文档,只需运行
make doxygen-run
运行测试
单元测试
为了构建和运行单元测试套件,请运行
make check
这将验证库在目标平台上是否正常运行。此外,它还将生成集成测试二进制文件。
集成测试
该库还包含一组针对真实 AMQ 代理运行的测试。这些测试允许您针对代理验证此 ActiveMQ CPP 分发。在没有代理的情况下运行这些测试会导致测试失败。测试当前将代理 URL 硬编码为 tcp://127.0.0.1:61613(用于 stomp)和 tcp://127.0.0.1:61616(用于 openwire)。
集成测试通过“make check”构建。要运行它们,首先启动代理,然后
cd src/test-integration
./activemq-test-integration
这将花费相当长的时间才能完成,请耐心等待。
示例
发行版在 src/examples 中附带一个示例应用程序。默认情况下,示例通过“make”命令编译,但可以使用类似于以下命令手动编译(根据平台而异)。
g++ -o main -pthread -I ../main main.cpp ../../src/main/.libs/libactivemq-cpp.a -luuid -I /usr/include/apr-1.0/ -lssl -lcrypto -lapr-1
在 Windows 上使用 MSVC 构建
我们支持在 Windows 上使用 Cygwin 包使用 GNU 编译器。但是我们也支持在 Windows 上使用 MSVC 编译器。
您需要设置一些内容来确保 MSVC 编译成功。
包含依赖项
项目文件引用依赖项部分中描述的库。要成功构建,您必须将这些库放在项目设置中列出的目录中,或者添加库目录的新位置。
MSVC >= 2008
如果您使用的是 MSVC >= 2008,则它附带 Windows SDK(因此您无需单独下载它)。
对于 ActiveMQ-CPP >= 2.2,您需要按照上面讨论的有关构建 APR 的一些特殊说明操作。
非 Vista/MSVC < 2008
如果您使用的是 Visual C++ < 2008,则需要下载并安装 Platform SDK(如果您尚未安装)。安装后,执行以下操作
- 确保在 PATH 环境变量中设置了 MSVC 安装路径。您可以通过在命令行中键入 cl.exe 来测试它,如果您收到找不到它的错误,则需要修复 PATH。或者,您也可以通过运行 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat 来设置必要的环境变量。
-
将 INCLUDE 环境变量设置为包含 MSVC 包含文件路径和 Platform SDK 包含文件路径。例如
INCLUDE = D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft Platform SDK\Include\*
-
将 LIB 环境变量设置为包含 MSVC 库路径和 Platform SDK 库路径。例如
LIB = D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft Platform SDK\Lib