源代码的获取

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
}

第二篇:SOUI源码的获取及编译的更多相关文章

  1. Java中常用的七个阻塞队列第二篇DelayQueue源码介绍

    Java中常用的七个阻塞队列第二篇DelayQueue源码介绍 通过前面两篇文章,我们对队列有了了解及已经认识了常用阻塞队列中的三个了.本篇我们继续介绍剩下的几个队列. 本文主要内容:通过源码学习De ...

  2. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

  3. [源码]随机获取虾米音乐song_id API文件

    [源码]随机获取虾米音乐song_id API文件 January 11, 2015 注意:此API请放置于国内主机使用,如香港.北京等等,否则会提示:虾米音乐在您所处的国家或地区暂时无法使用 < ...

  4. [源码]一键获取windows系统登陆密码vc6版源码

    [源码]一键获取windows系统登陆密码vc6版源码支持:XP/2000/2003/WIN7/2008等 此版本编译出来的程序体积较小几十KB... 而vs版则1点几M,体积整整大了2-30倍对某些 ...

  5. Python3 Selenium WebDriver网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作

    Python3 Selenium WebDriver网页的前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 通过selenium webdr ...

  6. Selenium WebDriver-网页的前进、后退、刷新、最大化、获取窗口位置、设置窗口大小、获取页面title、获取网页源码、获取Url等基本操作

    通过selenium webdriver操作网页前进.后退.刷新.最大化.获取窗口位置.设置窗口大小.获取页面title.获取网页源码.获取Url等基本操作 from selenium import ...

  7. Linux系统的命令源码的获取方法

    我们知道,Linux是开源的,它自带的功能强大的命令也是开源的,也就是说.我们能够获得这些命令的源码并研究它.那到底怎样获得系统的命令的源码呢? 命令的源码是一个软件包为单元的,放在一个软件包的源码中 ...

  8. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  9. 【转】Android 4.3源码的下载和编译环境的安装及编译

    原文网址:http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html  告诉windows用户一个不好的消息,windows环境下没法 ...

随机推荐

  1. Find celebrity

    Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there may exist o ...

  2. Bitmap vs 2Bitmap的实现

    [本文链接] http://www.cnblogs.com/hellogiser/p/bitmap-vs-2bitmap.html [题目] 在2.5亿个整数找出不重复的整数,内存不足以容纳着2.5亿 ...

  3. Linux下编译安装python3

    Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装py ...

  4. codeforces 425B Sereja and Table (枚举、位图)

    输入n*m的01矩阵.以及k. n,m<=100,k<=10 问修改至多k个,使得矩阵内的各连通块(连着的0或1构成连通块)都是矩形,且不含另外的数字(边界为0(1)的矩形内不含1(0)) ...

  5. C Primer Plus_第二章_C语言概述_复习题与编程练习

    REVIEW 1.如何称呼C程序的基本模块? ans 它们被称为函数 2.什么是语法错误?给出一个英语例子和一个C语言例子 me C的语法错误是指把正确的C符号放在了错误的位置 likes codin ...

  6. ListView之BaseAdapter的使用

    话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gal ...

  7. 【leetcode】Linked List Cycle II (middle)

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...

  8. 【leetcode】Binary Tree Maximum Path Sum (medium)

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  9. 【leetcode】Two Sum (easy)

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  10. 【python】入门学习(九)

    面向对象编程 class 定义类,类的值可以修改 _ _init_ _(self) 初始化函数,创建类时自动调用 self 指向对象本身,可以用其他的名字 但不建议 #person.py class ...