| -------------------------------------------------------------------------- |
| ActiveMQ CPP Library |
| -------------------------------------------------------------------------- |
| |
| ActiveMQ CPP is a messaging library that can use multiple protocols to |
| talk to a MOM (e.g. ActiveMQ). |
| |
| 1 Dependencies |
| -------------------------------------------------------------------------- |
| |
| There are several dependencies that need to be met in order to build and |
| install ActiveMQ-CPP on a Unix type system, the short list is shown below, |
| read the sections that follow for more detailed information. On Windows |
| you will not need the Auto Tools since the library is built using Microsft's |
| Visual Studio product. |
| |
| Tool Recommended Version |
| ------------------------------- |
| autoconf >= 2.61 |
| automake >= 1.10 |
| libtool >= 1.5.24 |
| APR >= 1.3* |
| CPPUnit >= 1.10.2* ( 1.12.1 is recommended ) |
| OpenSSL >= 0.9.8m* ( 1.0.0 or higher is recommended, this is an optional dependency) |
| |
| * Requires that the Development package also be installed. |
| |
| 1.1 CppUnit |
| -------------------------------------------------------------------------- |
| |
| The package contains a complete set of CppUnit tests. In order for you to |
| build an run the tests, you will need to download and install the CppUnit |
| suite. See http://cppunit.sourceforge.net/cppunit-wiki |
| |
| On Fedora, type the following: |
| |
| sudo yum install cppunit cppunit-devel |
| |
| On Debian/Ubuntu, type the following: |
| |
| sudo apt-get install libcppunit-dev |
| |
| Make sure that the paths to the installed CppUnit library and includes are |
| visible in your current shell before you try building the tests. |
| |
| Windows users will need to build the CppUnit library using the CPPUnit |
| MSVC project files. A discussion of the build process can be found |
| on the CPPUnit wiki under: |
| |
| http://cppunit.sourceforge.net/cppunit-wiki/BuildingCppUnit1 |
| |
| This covers both MSVC along with many other platforms and tool suites. |
| The included Visual Studio projects are configured with the assumption |
| that you will configure Visual Studio with the locations of the Platform |
| SDK and the CPPUnit and APR libraries and headers. |
| |
| 1.2 APR |
| ------------------------------------------------------------------------- |
| |
| The build requires the APR library. This library can be obtained from the APR |
| site at: http://apr.apache.org/ See the documentation there on how to build |
| this libraries for your platform. On many Unix system the library can be |
| installed using the systems package installer. |
| |
| The Library has been tested using version v1.3 and higher of the APR libs, |
| the older 0.9 version will definitely not work with this library. |
| |
| Some of the Unix type OS'es currently shipping include APR 1.2.x, this implies |
| that you will need to build and install APR from the source download at Apache. |
| |
| ----------------------------------------------------------------------- |
| |MacOS X Note: | |
| | If you have installed APR via MacPorts | |
| | (http://www.macports.org/) and you are building ActiveMQ-CPP from | |
| | source, you will need to specify the location of the APR library | |
| | to the configure script. This is easy to do and only requires one | |
| | extra option for compilation. An example of this is shown below | |
| | using the standard location for this library as installed by | |
| | MacPorts: | |
| | | |
| | $ ./configure \ | |
| | --with-apr=/opt/local/var/macports/software/apr/1.3.3_0/opt/local/ | |
| | | |
| | Please notice that this is simply a single option to the | |
| | configure script that has been broken into two lines by escaping | |
| | the newline character to fit the formatting of this file. | |
| | | |
| | If you have manually compiled and installed the APR libraries into | |
| | a custom location, then you will need to point to that location | |
| | using the argument above. | |
| ----------------------------------------------------------------------- |
| |
| 1.3 OpenSSL |
| -------------------------------------------------------------------------- |
| |
| If you wish to use the SSL Transport then you will need to have OpenSSL and |
| its includes installed on your system. We recommend that you use version 1.0.0 |
| or higher for best performance and security, but version from 0.9.8 are also |
| known to work. The autoconf script will search for the library and enabled support |
| automatically if it is found. |
| |
| You can disable the OpenSSL checks in the configure script with the --disable-ssl |
| option or you can specify a custom location for the OpenSSL package with the |
| --with-openssl option. See the --help option on the configure script for more |
| information. |
| |
| On Windows you need to obtain an OpenSSL binary package and place the libraries on |
| the system path or in the System32 directory. In the Visual Studio project you must |
| add the HAVE_OPENSSL flag to the preprocessor directives and add the paths for the |
| includes and libraries so that the compiler and linker can find them. |
| |
| 1.4 GNU Build System (for building on Unix/Linux/OS X) |
| -------------------------------------------------------------------------- |
| |
| To Generate the ./configure script use to create the Makefiles, you need |
| the following software installed: |
| |
| Tool Recommended Version |
| ------------------------------- |
| autoconf >= 2.63 |
| automake >= 1.10 |
| libtool >= 1.5.24 |
| |
| On Debian/Ubuntu, multiple versions of autoconf and automake are available |
| in separate packages. If you have multiple versions of autoconf or automake |
| installed on your system, you may have to configure the versions to use |
| using /usr/sbin/update-alternatives. |
| |
| ----------------------------------------------------------------------- |
| |Ubuntu Note: | |
| | | |
| |In order to build you will need the Build Essentials Package | |
| | | |
| | sudo apt-get install build-essential | |
| ----------------------------------------------------------------------- |
| |
| 2 Building on Unix/Linux/OS X |
| -------------------------------------------------------------------------- |
| |
| ----------------------------------------------------------------------- |
| |Solaris 10 Note: CppUnit might not build until you correct the file | |
| | libstdc++.la to contain the correct data, see this discussion: | |
| | http://forum.sun.com/jive/thread.jspa?threadID=73150 | |
| | Also you must pass --enable-shared=no for Solaris GCC builds | |
| | For Solaris builds using the Sun Compiler you must set the env | |
| | values CC and CXX to point to the cc and CC commands respectively. | |
| ----------------------------------------------------------------------- |
| |
| The configure script will customize the way the software is built and |
| installed into your system along with detecting the available libraries |
| that have been installed. To use the default configuration just run: |
| |
| ./configure |
| |
| For more help on how to customize the build configuration, run: |
| |
| ./configure --help |
| |
| Once the configure script has run successfully, you are ready to build. |
| Run: |
| |
| make |
| |
| This will build all of the core ActiveMQ CPP source code. To build and |
| install the code into the system directories, run: |
| |
| make install |
| |
| You will have to become the superuser in order to be able to install the |
| files. |
| |
| ** A Note For ActiveMQ-CPP Developers ** |
| |
| If you need to make any changes to the configure.ac or any of the included |
| m4 files then you need to regenerate the configure script. |
| |
| ./autogen.sh |
| |
| This should be run the first time and any time you change configure.ac or |
| any of the Makefile.am files. |
| |
| ----------------------------------------------------------------------- |
| |MacOS X Note: | |
| | Make sure to set the LIBTOOLIZE environment variable to point to | |
| | /usr/bin/glibtoolize for the build to complete successfully. Below | |
| | is an example: | |
| | | |
| | $ export LIBTOOLIZE=/usr/bin/glibtoolize | |
| | | |
| | If you do not use this environment variable you will encounter an | |
| | error stating: | |
| | | |
| | Can't exec "libtoolize": No such file or directory at | |
| | /opt/local/share/autoconf/Autom4te/FileUtils.pm line 290... | |
| ----------------------------------------------------------------------- |
| |
| 3 Doxygen |
| -------------------------------------------------------------------------- |
| |
| To generate the Doxygen documentation for the project, just run: |
| |
| make doxygen-run |
| |
| 4 Running Tests |
| -------------------------------------------------------------------------- |
| |
| 4.1 Unit Tests |
| -------------------------------------------------------------------------- |
| In order to build and run the suite of unit tests, run: |
| |
| make check |
| ./src/test/activemq-test |
| |
| This will verify that the library is functioning correctly on the target |
| platform. In addition, it will generate the integration tests binary. |
| |
| 4.2 Integration Tests |
| -------------------------------------------------------------------------- |
| The library also contains a set of tests that are run against a real AMQ |
| broker. These allow you to validate this distribution of ActiveMQ CPP |
| against your broker. Running these without a broker will result in failed |
| tests. The tests currently hard-code the broker url to be |
| tcp://localhost:61613 for Stomp and tcp://localhost:61616 for Openwire. |
| |
| The integration tests are built via "make check". To run them, first |
| start a broker and then |
| |
| ./sr/test-integration/activemq-test-integration |
| |
| This will take quite some time to complete, so be patient. It is recommended |
| that you restart the broker between successive runs of the integration tests. |
| |
| 5 Example |
| -------------------------------------------------------------------------- |
| There are example applications that ship with the distribution in |
| src/examples. The examples are compiled by default with the "make" |
| command on Unix systems. Only one sample is included in the Visual Studio |
| projects supplied, the others can be easily added by examining the settings |
| of the one supplied. |
| |
| 6 Notes for Windows users |
| -------------------------------------------------------------------------- |
| We do not support using the GNU compiler on Windows, using the Cygwin package |
| or the MinGW platform, several issues with sockets and threading were found to |
| exist when trying to use these solutions. |
| |
| However we do support using the MSVC compiler on Windows, we provide a set of |
| Visual Studio project files for v2010, newer version should be able to upgrade |
| these files to the newest format. |
| |
| There are a couple or things that you will need to setup to ensure that |
| the MSVC compile succeeds. |
| |
| * When linking your application to the DLL version of the ActiveMQ-CPP library |
| you must link your app the the same runtime version that the DLL is linked to, |
| otherwise your application will cause heap corruption when you delete objects |
| that are created in the ActiveMQ-CPP DLL's heap. |
| |
| * You need to download and install the Platform SDK if you don't have it |
| installed already. On machines where you intend to use the built libraries |
| and executable you will also need to install the MS Redistributable for the |
| version of Visual Studio which you used to build the library. |
| |
| 6.1 Project Settings |
| |
| The Visual Studio 2010 Project files included with the code have been configured to look |
| for the various headers and library files of the APR, OpenSSL and CPPUnit projects using |
| a predefined directory structure and a set of environment variables which can be used to |
| define the exact location on disk. |
| |
| The directory structure for each dependency is prefixed with an environment variable, the |
| set of variables is as follows: |
| |
| Library Recommended Version Windows Env Var |
| ------------------------------------------------------------ |
| APR >= 1.5+ ${APR_DIST} |
| CPPUNIT >= 1.10.2 ${CPPUNIT_DIST} |
| OpenSSL >= 1.5.24 ${OPENSSL_DIST} |
| Platform SDK {varies} ${PLATFORM_SDK} |
| |
| Under each of the library dependencies the structure should be layed out as follows: |
| |
| ${APR_DIST}\ |
| win32\ |
| include\ |
| lib\ |
| bin\ |
| x64\ |
| include\ |
| lib\ |
| bin\ |
| ${CPPUNIT_DIST}\ |
| win32\ |
| include\ |
| lib\ |
| x64\ |
| include\ |
| lib\ |
| ${OPENSSL_DIST}\ |
| win32\ |
| include\ |
| lib\ |
| bin\ |
| exp\ |
| x64\ |
| include\ |
| lib\ |
| bin\ |
| exp\ |
| |
| 6.2 Obtaining and building the dependent libraries |
| |
| Before you can build the ActiveMQ-CPP library you need to get builds of the required libraries |
| installed on you system. This is not always simple on windows, we will offer a few tips to try |
| and make getting a copy of each here but you might also want to consult Google and ask on the |
| mailing list for more help. |
| |
| 6.2.1 APR library. |
| |
| APR is provided in source form only from the Apache Software Foundation. You will need to build |
| a library from source by downloading the latest release from: |
| |
| http://apr.apache.org/ |
| |
| At the time of this writing the latest version was v1.5.2 and is recommended since its build |
| support files are working with the Visual Studio 2010 tools. |
| |
| APR is built from the command line using its provided Make files. When building the library you |
| need to ensure you are in the right environment to produce the desired architecture builds (x64 or |
| win32). You can open a command line that's correct by using the shortcuts under the Visual Studio |
| start menu location (ex. Visual Studio 2010 / Visual Studio Tools / Visual Studio x64 win 64 Command Prompt |
| |
| Once you are in the proper command prompt change to the directory where your APR source code is |
| located (ex: C:\APR) and then run the build for the library to produce the desired ARCH build. |
| |
| For a 32 bit library which installs into a proper distribution directory run: |
| |
| nmake -f Makefile.win ARCH="win32 Release" PREFIX=C:\dist\APR\x64 buildall install clean |
| |
| and for a 64 bit build of the library use the command. |
| |
| nmake -f Makefile.win ARCH="x64 Release" PREFIX=C:\dist\APR\x64 buildall install clean |
| |
| 6.2.2 CPPUnit |
| |
| To build the CPPUnit library for later Visual Studio versions such as 2010+ you need to download the |
| most up to date code for CPPUnit v1.12.1+ from its SVN location. The current location is: |
| |
| https://svn.code.sf.net/p/cppunit/code/trunk/cppunit |
| |
| Once you have checked out the code you can use the included Visual Studio 2010 project files to |
| build the various target (Debug, Release, Debug DLL, Release DLL) and copy each to the location |
| you have chosen, just ensure you follow the directory layout as specified above. |
| |
| 6.2.3 OpenSSL |
| |
| OpenSSL can be the harder one to obtain on Windows. If you choose to use SSL on Windows you need |
| to locate a build of OpenSSL that matches your Visual Stidio version (2010 at the time of this |
| writing) and install it into the location matching the directory layout configured in the ActiveMQ-CPP |
| project files. Builds for visual studio 2008 were available online at this location: |
| |
| http://slproweb.com/products/Win32OpenSSL.html |
| |
| Before attempting to build OpenSSL yourself you should check to see if newer 2010 versions are |
| available. If you find you need to build it yourself you should consult Google to find useful |
| Blog postings that detail how to get started with the build process for OpenSSL on Windows. |
| |
| |
| |
| |