http://bbs.csdn.net/topics/370241186

10个月前发过一个组建Qt团队,共同研究、学习、完善QtCreator的帖子,不过在为QtCreator提交完一个补丁后,就没有再继续了。
期间心里一直抱有歉意:名不符实的一个倡议。

近期在使用专门为KDE打造的发行版Chakra时,感觉很对自己的品味。
自然,也离不开QtCreator这个用Qt写的开源跨平台IDE了。

感觉QtCreator的开发是非常专业的,代码的质量非常高!
而且,参与开发的人比较多,比较热闹:你写的合并请求,总会有开发人员来检查,并提出一些很好的建议。这对自己的编程能力提高是有帮助的。

而且我发现:要参与QtCreator的开发,并不需要多少Qt的知识。
我只看了Qt开发入门教程的前三章(汗:《Windows程序设计》上下册都买了,也只看了前三章),觉得已经可以上手了。
如果遇到一些Qt相关的问题,只要查文档以及Google,一般都可以解决。
同时,在QtCreator的现有代码中查找相应用法,也是一个比较好的手段。

近期陆续提供了一些合并请求,也使得自己对Git的运用明显得心应手了,欣喜。
通过这些请求中的代码修改可以发现,参与QtCreator的开发也很容易!
https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/382
https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/397
https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/398
https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/401
https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/402
https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/403
https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/404

另外,我提交的一个纯C++工程(不依赖Qt库)也被开发者采用了。同时,开发者还创建了一个基于纯C的工程。
这样,QtCreator就可以充当C/C++开发、学习的一个IDE了。

我现在在Linux平台下使用GCC/GDB,而在Windows平台下使用的却是MSVC/CDB。
发现QtCreator的一个非常优势的地方是:调试器非常好用!
STL的容器也好,Qt的容器也好,结果输出都很友好。
而代码完成功能,在开源IDE里,也仅次于Eclipse CDT了。

下面是我写的一个Windows平台下的处理:用于编译QtCreator的。
大家要注意:文档要单独编译,之后还要在QtCreator的设置里添加开发文档。
通过阅读开发文档,可以帮助了解QtCreator的架构。

@echo off

qmake "CONFIG+=release" ..\QtCreator\QtCreator.pro
jom && nmake docs if %errorlevel% neq 0 goto error set DESTDIR=D:\MrDeng\DEVx86\qt
nmake INSTALL_ROOT=%DESTDIR% install rem qtcreatorcdbext32
if not exist %DESTDIR%\lib\qtcreatorcdbext32 mkdir %DESTDIR%\lib\qtcreatorcdbext32
xcopy /D /Y %~dp0\lib\qtcreatorcdbext32\*.dll %DESTDIR%\lib\qtcreatorcdbext32
rem dlls
xcopy /D /Y %~dp0\bin\*.* %DESTDIR%\bin
rem docs
xcopy /D /Y /S /I %~dp0\share\doc %DESTDIR%\share\doc
rem translations
rmdir /S /Q %DESTDIR%\share\qtcreator\translations goto success :error
echo 编译失败!
goto finish :success
echo 编译成功!
goto finish :finish

这是我用来编译Qt的:

一、编译动态发布版
修改编译选项(mkspecs\win32-msvc2010\qmake.conf):
QMAKE_CFLAGS_RELEASE = -O2 -Os -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -Os -MD -Zi
修改链接选项:
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /OPT:REF /OPT:ICF
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF
修改完成后,备份qmake.conf,然后替换所有“ -Zi”和“ /DEBUG”为空,目的是编译Qt库时不生成pdb文件。
编译Qt库结束后,再恢复“ -Zi”和“ /DEBUG”选项。 配置:
configure -confirm-license -opensource -prefix D:\MrDeng\DEVx86\qt -debug-and-release -shared -platform win32-msvc2010 -fast -no-qt3support -nomake demos -nomake examples -nomake translations 编译安装:
1. 拷贝目录mkspecs至D:\MrDeng\DEVx86\qt
2. nmake && nmake install 后期处理:
1. 清除重复的DLL(将qt\lib目录中的DLL全部删除)
2. 清除多余的帮助文档(先运行qt\bin\assistant.exe,以便更新qt\doc\pch;然后删除qt\doc\src和qt\doc\html)
3. 还原qmake.conf,恢复“ -Zi”和“ /DEBUG”选项 私有头文件:
xcopy /S /I include\*_p.h ..\include
xcopy /S /I src\*_p.h ..\src
在Qt源码目录中执行上述命令,之后将..\include和..\src目录拷贝到D:\MrDeng\DEVx86\qt中! 演示与示例:
1. 重新配置及编译安装
configure -confirm-license -opensource -prefix D:\MrDeng\DEVx86\qt -release -shared -platform win32-msvc2010 -fast -no-qt3support -nomake demos -nomake examples -nomake translations
cd demos && nmake && nmake install && cd .. && cd examples && nmake && nmake install && cd ..
2. 删除demos目录下*.exe
3. 删除examples目录下所有release目录及*.exe
4. 为demos和examples目录下所有文件添加只读属性 二、编译静态正式版
修改编译选项(mkspecs\win32-msvc2010\qmake.conf):
QMAKE_CFLAGS_RELEASE = -O2 -Os -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -Os -MT -Zi 修改链接选项:
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /OPT:REF /OPT:ICF
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF 配置及编译:
configure -release -platform win32-msvc2010 -fast -static -opensource -no-qt3support
nmake

通过这些方法得到的Qt开发环境,其实只有269MB。
附带上MSVC编译器绿色版,以及一些工具等,也才675MB
通过配置QtCreator绿色版,打包后137MB,可以在任何一台电脑上解压并且进行开发了。
感兴趣的朋友可以体验下。

其实参与QtCreator开发也很容易的更多相关文章

  1. 开发快很重要——如果只看法语或者产品结果C++似乎很强大,但是参与这个C++的开发过程,就会感觉到这种痛苦(Google也是这个看法)

    开发快很重要——如果只看语法或者产品结果C++似乎很强大,但是参与这个C++的开发过程,就会感觉到这种痛苦,太慢了,太麻烦了,虽然在反复调试和优化之后,最后产品的结果可能还不错. Delphi的最大特 ...

  2. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  3. 分享20款移动开发中很有用的 jQuery 插件

    今天,很显然每个网站都需要有一个移动优化的界面以提高移动用户的使用体验.在开发任何移动项目时,要尽可能保持每一种资源尺寸都尽可能的小,以给最终用户提供一个好的体验是非常重要的.在这篇文章中我们已经编制 ...

  4. Web 开发中很实用的10个效果

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  5. 网站开发中很实用的 HTML5 & jQuery 插件

    这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...

  6. 今日推荐:10款在 Web 开发中很有用的占位图片服务

    设计网站时,将要使用的图像在一开始通常还不存在,这个时候布局是最重要的.然而,图像的尺寸通常是预先设置,实用一些占位图像可以帮助我们更好地预览和分析布局. 如今,有免费的占位图片自动生成工具可以使用, ...

  7. 转:Web 开发中很实用的10个效果【附源码下载】

    原文地址:http://www.cnblogs.com/lhb25/p/10-useful-web-effect.html 在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多 ...

  8. 怎么说, 开发会很乐意去主动修改bug?

    怎么说, 开发会很乐意去主动修改bug? 一图顶上千言万语,如下:

  9. 初次接触ARM开发,理清这四个开发思路很重要!

    初次接触ARM开发,理清这四个开发思路很重要! 由于涉及编程,学习ARM单片机系统对于从事电子电路的设计者来说是有些困难的,学习知识不难,难的是理清其中的开发思路,找到一个好的起点.本文就将从这一步入 ...

随机推荐

  1. synchronize 和volatile 实现共享变量在多线程中的可见性

    1.什么是线程可见性 可见性:一个线程对共享变量值的修改能够及时被其他线程看到. 共享变量:如果一个变量在多个线程工作内存中都存在副本,那么着给按量就是这几个线程的共享变量. 2.导致共享变量在线程间 ...

  2. 图论&数学:矩阵树定理

    运用矩阵树定理进行生成树计数 给定一个n个点m条边的无向图,问生成树有多少种可能 直接套用矩阵树定理计算即可 矩阵树定理的描述如下: 首先读入无向图的邻接矩阵,u-v G[u][v]++ G[v][u ...

  3. LightOJ 1023 Discovering Permutations 水题

    http://www.lightoj.com/volume_showproblem.php?problem=1023 题意:26字母全排列 思路:用next_permutation或者思维想一下都可以 ...

  4. 【C++ STL】Map和Multimap

    1.结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理.他们根据key的排序准则将元素排序.multimap允许重复元素,map不允许. 元素要求: k ...

  5. Sass 基本特性-基础 笔记

    一.变量声明 $ 变量的声明使用 $  所有的变量必须声明到变量调用之前 从3.4版本开始,Sass已经可以正确处理作用域的概念     在局部范围声明一个已经存在于全局内的变量时,局部变量就会成为全 ...

  6. javascript 访问cookie信息

    在Javascript脚本里,一个cookie 实际就是一个字符串属性.当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值.每个cookie除了 name ...

  7. 51nod 1190 最小公倍数之和 V2

    给出2个数a, b,求LCM(a,b) + LCM(a+1,b) + .. + LCM(b,b). 例如:a = 1, b = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30 ...

  8. bzoj 1912 tree_dp

    这道题我们加一条路可以减少的代价为这条路两端点到lca的路径的长度,相当于一条链,那么如果加了两条链的话,这两条链重复的部分还是要走两遍,反而对答案没有了贡献(其实这个可以由任意两条链都可以看成两条不 ...

  9. 类图(Class Diagram)

    类图(Class Diagram): 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 类一般由三部分组成: 类名(Class):每个类都必须 ...

  10. docker 环境

    1.docker 升级 步骤: docker -v service docker stop yum -y update docker.io