Author Archives: csslayer
My CMake Tutorial 4
这篇的目的是教你 CMake 如何和 Qt 搅基。 总所周知的是,CMake和Qt自古就搅基搅的很深,CMake自带的find_package脚本其实蛮少,不过其中确绝对会有 Qt 的和KDE的,即使所引用的KDE的cmake脚本其实在KDE Libs里面。 说是介绍,其实主要是介绍一些在QtMacro.cmake里面的宏,cmake的自带脚本都在 /usr/share/cmake-<version>/Modules 下面,可以自行查看。 在开始之前,先来说说Qt的moc。Qt的信号和槽的机制其实大部分是靠代码生成的,Qt自带了一个名为moc的工具,负责解析C++的源文件,并且生成相关的代码。moc是meta object compiler 的缩写,关于moc都干了什么可以自己放狗去搜。 qt4_wrap_cpp(<varname> <header file(s)>) 用来把头文件生成moc文件,并且对应的文件名写到<varname>里面去。 这样你可以在增加target的时候直接使用<varname>和你的cpp文件,这样就可以一起编译了。 当然对于KDE来说,有更方便的automoc,这里按下不表。 Qt DBus DBus 的接口是通过xml文件指定的,qt也提供了按照DBus的introspect的xml文件直接生成代码的方法,具体来说有两边,一个是adaptor,一个是interface。adaptor是作为实现dbus那一方的,而interface则是调用dbus那一方的。 https://github.com/fcitx/kcm-fcitx/blob/master/src/CMakeLists.txt 例如这里 QT4_ADD_DBUS_INTERFACE(kcm_SRCS org.fcitx.Fcitx.InputMethod.xml org.fcitx.Fcitx.InputMethod ) 最后就会生成 org.fcitx.Fcitx.InputMethod.h 这个文件,然后直接include就可以直接使用这个类啦。 类似的adaptor则是相当于注册服务的那一方。
做个 Free Lancer 式的 KDE 开发者
开发总是蛮难的一件事情,尤其是当你面对着一个非常大的项目的时候,例如KDE。 经常会有人问到:“啊,我懂一点Qt,也懂C++,然后也挺闲的,想要给KDE开发点什么,但是不知道该干什么。” 这种问题在邮件列表上时有出现,经常一个回答就是,嗯,去找点Bug来修吧。其实对于常驻的开发者们来说,这个回答是十分make sense的,因为他们也不了解你的热情究竟如何,但是修复个Bug,即使你将来失去兴趣很快离开了,也不致于导致留下了一些无人维护的代码。修复个Bug,和写个新功能带来的成就感可是没法比的。 那么如何给自己一些动力呢?那就来修复你讨厌的Bug吧!或者找一些你喜欢的小功能来实现。我的KDE开发之路是从kimpanel开始的,话说回来,我对于界面的原生程度是无比执着的,也导致了我很喜欢kimpanel这个小东西,不过之前的作者已经离开很久了(由于他个人原因),也有很多Bug没有修复。于是我借着机会把它给重写了。当然为了进行提交,我顺带还申请了KDE的开发用的账号。 这个账号的权限可是不老小的,可以对KDE的任意代码进行修改,于是从这里开始我偶尔就会找一些小问题来解决一下。当然最好还是采用Reviewboard,因为你对于其他的项目的了解并不一定太深,让主要维护者来review一下总是好的。不过偶尔我也会干点直接提交的事情,如果我十分确定的话。 总之概括起来的话……当年Linux的评价就是有无数的眼睛盯着代码,于是偶尔自己也可以成为这样的眼睛啰。了解了更多的代码之后也可以方便自己加入到开发中去。
Fcitx Hangul
基本上就是port ibus-hangul……因为我不懂韩文。 不过额外比起来有quickphrase可以用 🙂 =-=-=-=-= Powered by Blogilo
Fcitx 10岁了
虽然精确说来其实都过了好些天了。 http://fcitx.csslayer.info/wiki/History 里面有一个暴长的版本历史,不知道能唤起多少人的回忆呢。 上面是最近整理的一些关于历史的小内容。 曾经做的视频用 Gource 输出的 Fcitx 开发记录。 P. S. 上面的网址打算作为以后的 fcitx.org ,前提是我能把域名搞到……