-
Notifications
You must be signed in to change notification settings - Fork 281
第二篇:SOUI源码的获取及编译
原文链接:《第二篇:SOUI源码的获取及编译》
SOUI的源码采用SVN管理。
SVN:http://code.taobao.org/svn/soui2
这里主要包含两个目录:trunk 及 third-part。
trunk目录保存SOUI项目的全部代码,third-part保存soui系统使用到的不方便放到trunk的第三方库,目前只有一个WKE(一个精简的webkit)的源代码。
一般情况下只获取trunk的代码就行。
SOUI项目采用QT的qmake管理项目文件。qmake已经从QT中分离出来,不需要你的机器上安装QT。
如果你的机器上安装了VS2008,可以直接打开trunk的根目录下的soui.08.sln
来编译,这个项目中各工程的编译依赖已经设置好,直接F7就可以全部完成编译。
如果你的机器安装的是其它版本(支持vs2005-vs2013vs2017),可以采用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
}
UI? just so so!
- 第一篇:SOUI是什么?
- 第二篇:SOUI源码的获取及编译
- 第三篇:用SOUI能做什么?
- 第四篇:SOUI资源文件组织
- 第五篇:在SOUI中使用XML布局属性指引
- 第六篇:在SOUI中用九宫格拉伸方式显示一个图片资源
- 第七篇:创建一个SOUI的Hello World
- 第八篇:SOUI中控件事件的响应
- 第九篇:在SOUI中使用多语言翻译
- 第十篇:扩展SOUI的控件及绘图对象
- 第十一篇:SOUI系统资源管理
- 第十二篇:SOUI的utilities模块为什么要用DLL编译?
- 第十三篇:在SOUI中使用有窗口句柄的子窗口
- 第十四篇:在SOUI中使用定时器
- 第十五篇:在SOUI中消息通讯
- 第十六篇:SWindow的布局属性pos2type及offset
- 第十七篇:使用窗口的cache属性加速SOUI的渲染
- 第十八篇:在SOUI中实现PreTranslateMessage
- 第十九篇:提高SOUI应用程序渲染性能的三种武器
- 第二十篇:在SOUI中使用分层窗口
- 第二十一篇:SOUI中的控件注册机制
- 第二十二篇:在SOUI中使用代码向窗口中插入子窗口
- 第二十三篇:在SOUI中使用LUA脚本开发界面
- 第二十四篇:导出SOUI对象到LUA脚本
- 第二十五篇:在SOUI中做事件分发处理
- 第二十六篇:两个SOUI新控件 ---- SListView和SComboView
- 第二十七篇:SOUI中控件属性查询方法
- 第二十八篇:SOUI中自定义控件开发过程
- 第二十九篇:使用SOUI的SMCListView控件
- 第三十篇:SOUI模块结构图及SOUI框架图
- 第三十一篇:SOUI布局之相对于特定兄弟窗口
- 第三十二篇:在SOUI2.0中像android一样使用资源
- 第三十三篇:使用uiresImporter生成uires.idx及skin.xml
- 第三十四篇:在SOUI中使用异步通知
﹊﹊﹊﹊﹊﹊﹊﹊﹊﹊
This wiki is created by [SOUI Team]