如何为Qt做贡献

项目不只是Qt了,应该算是Qt家族吧,例如Qt Creator等。 任务也不只是写代码了,界面、文档的汉化等等,本文都有涉及。 Qt已经Open Governance了,所有上述工作都可以走这个路径,也就是直接贡献给上游。泛泛的介绍可以看Contribute to Qt,具体的步骤: 帐号:注册Jira帐号,这个帐号会被同步到codereview。 协议:登陆上面提到的codereview站点,点击右上角的Settings,再点击左栏下方的Agreements,点击New Contributor Agreement,一般个人都是接着选择Individual,具体协议内容在这里就不再赘述了。在文本输入框中输入I AGREE后,点击Submit Agreement。 SSH公钥:还是codereview站点,点击右上角的Settings,再点击左栏中部的SSH Public Keys,上传你的SSH公钥,玩过github之类网站的应该都清楚。 Gerrit/Git的使用方式:详见Setting Up Gerrit。其中比较重要的一步就是commit-msg,配置正确的话,在git commit之后,commit msg里就会出现Change-Id字段。另外强烈建议在最后git push之前找现有的Approver或者Maintainer帮你查看一下。 上述变更在git push之后会进入codereview,然后就是和Approver或者Maintainer进行交互,直到最后完成,通常的沟通方式就是IRC或者邮件列表。 Qt的界面文件翻译,一般就是.ts文件的翻译,相关过程可以参考Translating Qt Into Other Languages,需要注意的是提交的时候有特别操作: 方法一:不运行git commit, 在翻译文件所在目录,运行make commit-ts 方法二:运行lconvert -locations none -i yours.ts -o yours.ts,然后git commit 主要是要把.ts文件中的易变的location信息去掉。 Qt的文档翻译,鉴于现在的qdoc功能有限,对于那些类的说明(文档都放在了源代码中),目前还无法处理。但对于综述性的单独.qdoc文件是可以翻译的,例如Qt 4源码仓库中的doc/src/目录是英文文档,翻译好的简体中文文档都应该放在doc/src/zh_CN/下,请保持相同的子目录结构。Translating Qt Into Other Languages中的Translating Qt Documentation Into Other Languages一节介绍了如何从.qdoc文件生成.html文件。 Qt Project的wiki翻译,请大家把简体中文的翻译直接放在主站上,目前对于wiki页面名称好像没有一致的规定,例如:Building […]

Clang Static Analyzer with Qt

1. OS: Snow Leopard 64bit 2. Qt: 4.8 cd ~/qt git clone git://gitorious.org/qt/qt.git work cd work git checkout -b origin/4.8 4.8 cp -rf mkspecs/unsupported/macx-clang mkspecs/unsupported/macx-checker Note: a patch for mkspecs/unsupported/macx-checker/qmake.conf: http://pastebin.com/u7mnkhue 3. Clang Static Analyzer: checker-256 cd ~/dev/packages wget http://clang-analyzer.llvm.org/checker/checker-256.tar.bz2 tar zxvf checker-256.tar.bz2 cd checker-256 rm bin/clang rm bin/clang++ cd /usr/local/bin ln -s /Users/liangqi/dev/packages/checker-256/bin/clang-3.0 clang […]

How to run autotests in Qt for Symbian on Linux and Mac?

Here is the official article for it, Installing Qt for the Symbian platform using Linux (experimental). The basic idea is same on Linux and Mac OS X. 1. For phone, you need to install Application TRK S60 5.0/Symbian^1 – s60_5_0_app_trk_3_2_7.sisx Symbian^3 – s60_tb_9_2_app_trk_3_2_8.sisx 2. Use usb cable to connect your phone and computer, Linux or […]

Build Qt 4.7 with Symbian^3 on Linux and Mac OS X

Similar steps as previous blog. Here I will only mention the difference between them: 1. Qt 4.7, please wait a while for the merging of 7c499bcfbf7f9c52b3d6523fea8396bd4ab7252e. git checkout -b 4.7 origin/4.7 2. You could enable the webkit which is inside of 4.7, then the configure line should be like: ~/qt/qt/configure -developer-build -opensource -confirm-license -xplatform symbian-gcce […]

Build Qt 4.8 with Symbian^3 on Linux and Mac OS X

Build Qt 4.8 with Symbian^3 on Linux and Mac OS X Kudos to Kristian Amlie and Thomas Zander for the “make file build system”. 1. OS: Linux – mine is 2.6.38-8-generic x86_64 Mac OS X – mine is 10.6.8 64bit 2. Symbian^3 NOTE: Looks like Qt is still not the 1st-priority citizen in the Symbian^3 […]

Qt中的一些全局测试用例

近期工作中接触过的,觉得很有意义。 目前这些测试用例都还在在$QTDIR/tests/auto下: bic 说明:利用g++的-fdump-class-hierarchy参数生成的类信息数据和VTable数据检查二进制兼容性。对于库来说很重要。gen.sh对已发布的版本生成历史数据,然后调用g++ -fdump-class-hierarchy生成当前版本数据再进行比较。只要是支持g++的平台都可以检测。 compilerwarnings 说明:tst_CompilerWarnings::warnings()中对几种编译器的警告进行了检测。 headers 说明:tst_Headers::licenseCheck()中对所有源文件进行协议检查。tst_Headers::privateSlots()中对所有头文件检查了私有槽必须含有“_q_”。tst_Headers::macros()对所有头文件检查了宏。 symbols 说明:利用nm检查库中函数名和全局变量。tst_Symbols::prefix()中利用nm -g -C -D –format=posix –defined-only对库中的函数名称的前缀进行检查。tst_Symbols::globalObjects()中利用nm -C –format=posix对库中的全局静态对象进行检测,应该是不能有的。

体会了一下Snow Leopard的一个开发bug

终于在公司搞到了一台旧的iMac 5.1, Intel Core 2 Duo 2.0 GHz/ 2G DDR2 667 MHz。 装上了Snow Leopard和官方发布的Qt 4.7.0 Beta 2和Qt Creator 2.1快照版,想debug进Qt库,竟然不成,咨询了公司内外的Mac开发朋友,原来我遇到了Apple的bug。 DYLD_IMAGE_SUFFIX=_debug makes application crash on Mac OS X – Snow Leopard DYLD_IMAGE_SUFFIX causing havoc on Mac OS X Snow Leopard 而且变态的Apple自己的bug tracker还是封闭的,只有号码,看不到具体情况。 最后的解决办法是: cd /usr/lib sudo mv libSystem.B_debug.dylib libSystem.B_debug.dylib.bak sudo mv libmx.A_debug.dylib libmx.A_debug.dylib.bak 之前还以为/Developers/SDKs/MacOSX10.6.sdk/usr/lib的有效呢。 BTW,学习了OS X下的ldd就是otool。 […]