建置 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 套件。
在您嘗試建置測試之前,請確保已安裝的 CppUnit 函式庫和 include 的路徑在您目前的 shell 中可見。
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 上建置)
若要產生用來建立 Makefiles 的 ./configure 指令稿,您需要安裝以下軟體
工具 | 建議版本 |
---|---|
autoconf | >= 2.59 |
automake | >= 1.9.6 |
libtool | >= 1.5.22 |
如果您想要以 HTML 格式產生 API 文件,您也可以安裝 Doxygen 和 Graphviz 套件。
建置
這假設您已安裝所有專案相依性。現在我們準備建立 configure 指令稿。為此,請執行
./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.
這些可以忽略。我們在單元和整合測試的 makefiles 中覆寫 CXXFLAGS
,以抑制編譯器警告。
這應該在第一次執行,以及任何時候您變更 configure.ac 或任何 Makefile.am 檔案時執行。
Solaris 10 注意事項
在您更正 libstdc++.la 檔案以包含正確的資料之前,CppUnit 可能無法建置,請參閱此討論。
configure 指令稿會自訂軟體的建置和安裝方式,並偵測已安裝的可用函式庫。若要使用預設組態,只需執行
./configure
如需更多關於如何自訂建置組態的說明,請執行
./configure --help
configure 指令稿成功執行後,您就可以開始建置了。執行
make
這會建置所有核心的 ActiveMQ CPP 原始碼。若要將程式碼建置並安裝到系統目錄中,請執行
您必須成為超級使用者才能安裝這些檔案。
Doxygen
若要產生專案的 doxygen 文件,只需執行
make doxygen-run
執行測試
單元測試
若要建置並執行單元測試套件,請執行
make check
這會驗證函式庫在目標平台上是否正常運作。此外,它還會產生整合測試二進位檔。
整合測試
該函式庫還包含一組針對真實 AMQ 代理程式執行的測試。這些測試可讓您針對您的代理程式驗證此 ActiveMQ CPP 發行版本。在沒有代理程式的情況下執行這些測試將導致測試失敗。這些測試目前會將代理程式 URL 硬式編碼為 stomp 的 tcp://127.0.0.1:61613 和 openwire 的 tcp://127.0.0.1:61616。
整合測試是透過「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 上使用 GNU 編譯器,使用 Cygwin 套件。但是,我們也支援在 Windows 上使用 MSVC 編譯器。
您需要設定一些事項,以確保 MSVC 編譯成功。
包含相依性
專案檔案會參考「相依性」章節中描述的函式庫。為了成功建置,您必須將這些函式庫放在專案設定中列出的目錄中,或為您的函式庫目錄新增位置。
MSVC >= 2008
如果您使用的是 MSVC >= 2008,它會附帶 Windows SDK (因此您不需要單獨下載它)。
對於 ActiveMQ-CPP >= 2.2,您必須遵循一些特殊的建置 APR 指示,如上所述。
非 Vista/MSVC < 2008
如果您使用的是 Visual C++ < 2008,如果您尚未安裝 Platform SDK,則需要下載並安裝它 (自 Windows Vista 發行以來,Platform SDK 被稱為「Windows SDK」)。安裝後,請執行以下操作
- 確保 MSVC 安裝路徑已設定在 PATH 環境變數中。您可以在命令列中輸入 cl.exe 來測試此設定,如果您收到錯誤訊息,抱怨找不到該程式,則需要修正您的 PATH。或者,您可以透過執行 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat 來設定必要的環境變數。
-
將 INCLUDE 環境變數設定為包含 MSVC include 和 platform SDK include 的路徑。例如
INCLUDE = D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft Platform SDK\Include\*
-
將 LIB 環境變數設定為包含 MSVC lib 和 Platform SDK lib 的路徑。例如
LIB = D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft Platform SDK\Lib