源代碼的獲取
SOUI的源碼采用SVN管理。
SVN:http://code.taobao.org/svn/soui2
這里主要包含兩個目錄:trunk 及 third-part。
trunk目錄保存SOUI項目的全部代碼,third-part保存soui系統使用到的不方便放到trunk的第三方庫,目前只有一個WKE(一個精簡的webkit)的源代碼。
一般情況下只獲取trunk的代碼就行。
SOUI的編譯
SOUI項目采用QT的qmake管理項目文件。qmake已經從QT中分離出來,不需要你的機器上安裝QT。
如果你的機器上安裝了VS2008,可以直接打開trunk的根目錄下的soui.08.sln來編譯,這個項目中各工程的編譯依賴已經設置好,直接F7就可以全部完成編譯。
如果你的機器安裝的是其它版本(支持vs2005-vs2013),可以采用trunk目錄下的make(*).bat來生成對應版本的項目文件,項目文件生成成功后會在根目錄生成一個soui.sln,打開該sln即可。VS2010+的版本需要先生成VS2010的項目文件,再用VS打開並升級。要生成vs2005,可以手動修改make(*).bat中的參數。
如果安裝的是vs2008或者vs2010還可以使用buildAll_x86.bat來生成項目文件並使用命名行完成編譯。
打開make(dll-win32-vs08).bat可以看到里面只有兩行代碼:
call "%VS90COMNTOOLS%..\..\VC\vcvarsall.bat" x86
tools\qmake -tp vc -r -spec .\tools\mkspecs\win32-msvc2008 "CONFIG += DLL_SOUI USING_MT CAN_DEBUG"
第一行通過VS的環境變量加載VS的PATH信息。
第二行調用qmake生成項目文件: -spec 后面的參數指定生成的項目文件VS版本(03,05,08,10),CONFIG += ***用來控制如何生成項目文件。項目文件支持4個預定義參數:
DLL_SOUI:代表將SOUI模塊編譯生成一個DLL,沒有該參數則生成LIB;
USING_MT:代表使用MT方式連接CRT,否則采用MD方式;
CAN_DEBUG:為release版本生成調試符號;
USING_CLR:項目提供“公共語言運行時”支持;
如果需要其它配置,可以手動修改common.pri。
下面是common.pri的代碼,基本可以望文生義:
CONFIG -= qt
CONFIG += exceptions_off stl_off
CharacterSet = 1
#DEFINES -= UNICODE
CONFIG(debug, debug|release) {
OBJECTS_DIR = $$dir/obj/debug/$$TARGET
DESTDIR = $$dir/bin
QMAKE_LIBDIR += $$DESTDIR
}
else {
OBJECTS_DIR = $$dir/obj/release/$$TARGET
DESTDIR = $$dir/bin
QMAKE_LIBDIR += $$DESTDIR
}
#<--下面這段代碼為debug和release生成不同的文件名
SAVE_TEMPLATE = $$TEMPLATE
TEMPLATE = fakelib
TARGET = $$qtLibraryTarget($$TARGET)
TEMPLATE = $$SAVE_TEMPLATE
#-->
DEFINES += _CRT_SECURE_NO_WARNINGS
QMAKE_LFLAGS += /MACHINE:X86
!CONFIG(USING_CLR){
#關閉RTTI
QMAKE_CXXFLAGS_RTTI_ON += /GR-
}
else{
QMAKE_CXXFLAGS += /clr
}
QMAKE_CXXFLAGS += -Fd$(IntDir)
QMAKE_CXXFLAGS_RELEASE += /O1
QMAKE_CXXFLAGS_RELEASE += /Zi
CONFIG(CAN_DEBUG){
#Release版本允許生產調試符號
QMAKE_LFLAGS_RELEASE += /DEBUG
QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF
}
CONFIG(USING_MT){
#使用MT鏈接CRT
QMAKE_CXXFLAGS_RELEASE += /MT
QMAKE_CXXFLAGS_DEBUG += /MTd
}
CONFIG(USING_CLR){
#使用MD鏈接CRT
QMAKE_CXXFLAGS_RELEASE -= /MT
QMAKE_CXXFLAGS_DEBUG -= /MTd
QMAKE_CXXFLAGS_RELEASE += /MD
QMAKE_CXXFLAGS_DEBUG += /MDd
}
#關閉異常
QMAKE_CXXFLAGS -= -EHsc
win32-msvc*{
QMAKE_CXXFLAGS += /wd4100 /wd4101 /wd4102 /wd4189 /wd4996
}