編譯ICE
以Ice.3.2.1的編譯爲例作簡單步驟介紹。Linux較爲簡單,Window上略麻煩,詳見源碼包中的編譯說明。
目前Ice只支持動態庫方式,不能編譯成靜態庫。
一.win32平臺
1. 將Ice源碼安裝或解壓到指定目錄
這裏假定爲D:/Ice-3.2.1,設ICE_HOME=D:/Ice-3.2.1。
ICE在Win32下編譯不使用工程文件,採用命令行方式。$(ICE_HOME)/Makefile.mak是nmake使用的編譯入口文件,$(ICE_HOME)/config/Make.rules.mak是編譯選項設置文件,被$(ICE_HOME)/Makefile.make引用。
2.選項設定
1) 設定編譯模塊
Makefile.mak中的SUBDIRS宏決定編譯的所有模塊,默認值如下:
SUBDIRS = config src include test demo slice doc
如果不需要編譯其中的模塊,可在宏中將其對應值去除
2)設定源碼路徑
$(ICE_HOME)/config/Make.rules.mak文件中的宏prefix指定源碼路徑,默認值
prefix = C:/Ice-$(VERSION)
修改爲
prefix = D:/Ice-$(VERSION)
3)設定編譯器
$(ICE_HOME)/config/Make.rules.mak文件中的CPP_COMPILER宏指定編譯器。
根據本機編譯環境指定對應編譯器,可選的有VC60, VC71, VC80, VC80_EXPRESS, BCC2006等。
這裏使用VS.NET2005
CPP_COMPILER = VC80
3)設定第三方源碼目錄
所需的第三方源碼包有
- STLport 4.6.2 or later (only for Visual C++ 6.0)
- Berkeley DB 4.5.20
- expat 2.0
- OpenSSL 0.9.7 or later (OpenSSL 0.9.8 or later recommended)
- bzip2 1.0
$(ICE_HOME)/config/Make.rules.mak文件中的THIRDPARTY_HOME宏指定第三方安裝目錄,其默認值爲:
THIRDPARTY_HOME = C:/Ice-$(VERSION)-ThirdParty-$(TPH_EXT)
實際上等價於
THIRDPARTY_HOME = C:/Ice-$(VERSION)-ThirdParty-$( CPP_COMPILER)
如果使用VC80,則默認安裝目錄爲 D:/Ice-3.2.1-ThirdParty-VC80
可將THIRDPARTY_HOME指定爲本機的第三方目錄,但要注意所有的第三方包都要置於同一目錄下(STLPort除外)。
3. 第三方庫安裝
將對應的第三方包解壓到$(THIRDPARTY_HOME)
要注意所有的第三方包都要置於同一目錄下(STLPort除外)。
4. 編譯
在VS.2005的命令行下,進入ICE_HOME目錄,執行nmake /f Makefile.mak
編譯完成的庫在$(ICE_HOME)/lib下
編譯完成的工具在$(ICE_HOME)/bin下
清理使用:
nmake /f Makefile.mak clean
二.Xinux平臺
類Linux平臺下的編譯要容易許多,而且ICE使用的第三方庫多半都已經預安裝。
其對應使用的Makefile文件是:
$(ICE_HOME)/Makefile和$(ICE_HOME)/config/Make.rules,作用和Win32平臺類似。
要編譯模塊可能需要自定義外,均可使用默認配置
直接在安裝目錄下執行make即可。
編譯完成的庫在$(ICE_HOME)/lib下
編譯完成的工具在$(ICE_HOME)/bin下注意用make install進行安裝。
三.附錄:
所需第三方庫:
- STLport 4.6.2 or later (only for Visual C++ 6.0)
- Berkeley DB 4.5.20
- expat 2.0
- OpenSSL 0.9.7 or later (OpenSSL 0.9.8 or later recommended)
- bzip2 1.0