从其它平台迁移而来


前言

做为一个桌面应用开发者,工作中一直使用的是Delphi(是语言,也是IDE,基于pascal语言),无论是经典的D7,还是现下最新的XE,都有着还算丰富的使用经验吧,虽然这两者都各有优缺点。做为团队开发成员之一,具体使用什么,几乎是没什么选择权的,毕竟公司有自己的技术栈,当然还有相应的技术债。

但是,做为一个个人开发者,还是比较喜欢严谨的pascal语言的(其实Go的一些语法就是借鉴pascal的,比如:类型在变量右侧),而且还有着那么多年的开发经验,理论上来说,写个小工具啊什么的,还是应该选择熟悉的Delphi才是,但是Delphi并不符合个人的选择条件:

  1. 不要太重量级

  2. 有当前比较流行的特性

  3. 有相对活跃的社区

D7以现在的眼光来看,绝对算是足够轻量级的,整个环境(不含三方组件)安装完还不到1G,但是是毕竟是二十年前的东西了,不说新特性,一些陈年bug就够喝一壶了。

相对来说,XE却是一直在更新着,新特性是有了,但是仅安装包就7~9G,只安装桌面开发必须的自带组件,安装完也有15G+,而且正版授权巨贵,社区版限制又巨多。

至于有相对活跃的社区这条,国外应该还行,但对英文渣渣来说还是有点难了;而国内,Delphi都是快绝迹的语言了,当我什么都没说吧。

所以,选来选去,也就只剩开源的LazarusCodeTyphon(基于Lazarus)了。原本是看中了CodeTyphon的,但是死活在Bug10上安装不成功,也就只能选Lazarus了,不过Lazarus倒也是越用越顺心了。

虽说Lazarus标榜的一次编写,到处编译,不过,实际用到的几乎都是windows平台,至于其它平台,有机会再说吧。

开发环境

以下以Lazarus 2.2.4为例。

安装IDE

Lazarus32位版本和64位版本,而且都互相有对方架构的插件包,个人尝试后还是觉得分别安装两个版本比较合适(不要质疑,真的可以同时安装多个版本,不同架构、不同版本号都可以)。

由于Bug10不愧是Bug10,所以个人还是喜欢整成免安装版本,万一哪天Bug10作妖,就不怕重新折腾了。

  1. 在非系统盘下手动创建目录,比如D:\lazarusD:\lazarus\config,前者是IDE的安装目录,后者是IDE的配置目录

  2. 下载并运行安装包

  3. 选择目标位置这一步时,选择之前手动创建的安装目录,同时勾选创建一个新的第二的安装(不要质疑,哪怕是第一次安装),下一步

  4. 选择配置文件夹这一步,选择之前手动创建的配置目录,然后一路下一步

  5. 安装完之后,把安装目录备份一下,再把IDE卸载了,然后把安装目录恢复了(当然,这一步也可以不做)

  6. 运行lazarus.exe,首次运行时(包括未来重装系统后)会弹出Welcom to Lazarus IDE的窗口,其中Fppkg项会有叹号(似乎是2.2版本之后才有的),点Restore Fppkg configuration,再点Write new configuration files,最后点Start IDE

  7. 可以为lazarus.exe创建快捷方式

至此,IDE就算是安装完了,需要的话可以把安装目录整个压缩备份,不过个人还是建议把IDE配置好了再备份

IDE配置

构建配置

由于Lazarus每次安装三方组件都要重新build,如果三方组件装得多了,IDEexe会很大(不是你自己写的exe),而个人又是比较喜欢小巧的,所以这一步是少不了的。

  1. 菜单Tools->Configure "Build Lazarus"

  2. Profile to build项选择Optimized IDE

  3. Build会立即重新构建IDE;点Save Settings仅保存配置,下次构建时生效

一体式窗口

安装完之后,IDE默认是D7那种分离式窗口,在小分辨率屏幕的时代很有用,不过现在嘛,个人感觉还是一体式窗口比较舒服。Lazarus已经提供了这样的包,只不过默认并没有启用。

  1. 菜单Package->Install/Uninstall Packages ...

  2. 右侧选择AnchorDockingDsgn 1.0,点Install selection或双击

  3. Save and rebuild IDE重新构建,IDE重启之后就是一体式的窗口了

  4. 拖动子窗口的标题,会自动吸附,调整为自己喜欢的布局,重启IDE即可

此时,若是不小心把布局调乱了,就不好恢复了,所以可以考虑把自动保存布局功能给关了:

  1. 菜单Tools->Desktops ...,去掉Auto save active desktop的勾,关闭

其它配置

菜单Tools->Options ...是IDE集中的配置,可依自己习惯或喜好进行配置。不过,倒是可以分享些个人的配置及相应的考虑,以供参考:

  • 默认英文界面就挺好,毕竟中文翻译不全,也不够精准,万一需要去泡一下官方社区了,至少英文界面还能知道具体说的是哪儿

  • Environment->IDE CoolBar,选择第一个工具条,点Configure,把File menu commands下的New ...添加上【理由:默认工具条上只有新建普通单元窗体,新建工程模块Frame等还要去菜单里点,不够快捷】

  • Environment->Backup,两个都选.~pp【理由:不管是工程还是单元,统一后缀名,方便用脚本清理,也方便加入版本库的忽略列表

  • Environment->NamingDefault Pascal extension项选择.pp【理由:方便与Delphi的源码文件做区分】

  • Editor->Display,设置Show line numbers后的值为1【理由:每行都显示行号,方便与人交流/讨论代码】

  • Editor->Display->Markup and Matches,勾选Matching Keywords下的Outline (global)【理由:代码块带上垂直线,方便区分嵌套关系】

  • Editor->Completion and Hints,勾选Auto remove empty methods【理由:保持代码整洁,减少误导】

  • JCF Format Settings->Clarify->Comments,不勾选Remove empty '//' comments【理由:相信我,你一定会用得上//空注释的】

  • Debugger->Debugger backend,如果经常编写、调试dll的话,选择Gdb会比较合适,否则保持默认【理由:目前FpDebug不支持dll的调试】

自带的第三方可选组件

上面的一体式窗口就是其中的一个组件包,其它组件包安装方法相同。这里简单介绍几个:

  • h2paswizard 0.0:需要把C/C++.h头文件转为pascal.pas单元文件时会用到,不过就个人而言还是喜欢手撸来得精准

  • LazActiveX 0.1:安装该包后才能安装基于ActiveX的组件,例如windows自带的TTS

  • lazdeamon 0.9.9:编写windows 服务形式的应用了会用到

  • lazvlc 1.0VLC播放器的组件包,编写播放视频的应用了会用到,需要手动下载V2以上版本libvlccore.dlllibvlc.dll

  • weblaz 1.0fpweb的组件包,不安装直接引用相关单元也可以

官方远程仓库的第三方可选组件

菜单Package->Online Package Manager ...可以下载/安装官方远程仓库收录的第三方可选组件,需要联网才能使用。也简单介绍几个:

  • CEF4Delphi:谷歌浏览器内核,依赖DCPcrypt,同时需要手动下载版本号完全相同的一梭子二进制文件,所以还是直接去GitHub上下载吧

  • DBTreeViewAndDBCntrlGrid:可从数据集中把树型数据直接显示为树,可以算做Lazarus默认的数据感知组件的扩充

  • DCPcrypt:常用加密/解密算法包

  • Indy10Delphi上默认的经典的网络通讯组件包

  • LNet:轻量级的网络通讯组件包,不过其UDP组件不能绑定发送端口,感觉莫名其妙

  • MORMot:一个很牛的pascal语言的ORM框架

  • PythonForLazarusPython4DelphiLazarus版移植,懂的自然懂

其它开源仓库的第三方组件

开源的实在是太多太多了……这里就只说一个个人觉得巨实用的:

  • dataset-serialize:数据集与JSON序列化/反序列化的项目