我们在《Lazarus - 隐秘的神器》一文中了解到了 Lazarus 的历史和特点,此后将正式开始学习Lazarus 开发。
如果你也对 Windows、Pascal、Delphi 开发感兴趣,请关注 Lazarus专栏 📰
安装开发环境
官网:Lazarus Homepage (lazarus-ide.org)
安装包(3.2.2):Download lazarus-3.2-fpc-3.2.2-win64.exe (Lazarus) (sourceforge.net)
Lazarus 的安装相比 Delphi 更加的简便,甚至直接选择好了本地语言:
默认选项,一路下一步即可
配置IDE
分离浮动窗口改为一体式窗口
刚安装完的 IDE 是分离浮动式窗口,像极了早期的Delphi布局。优点是,灵活,非常的灵活,但也很难管理。
如果想要窗口合并为一的效果,很简单。
在Lazarus的安装目录的/components/anchordocking/design/文件夹找到anchordockingdsgn.lpk文件。
通过IDE菜单 软件包/打开软件包文件,选择 anchordockingdsgn.lpk 后
点击软件包窗口工具栏上的【使用】按钮,选择【安装】菜单项
确定即可
提示需要重新构建Larzaurs,选择【是】后,Larzaurs将自动重新编译并重启,重启后就是窗口合为一体的样子,很像现在的 Delphi 了。
设置编辑器主题
你可能注意到我的 Lazarus 代码编辑器风格看起来很像 Delphi,通过 IDE 选项设置中的 编辑器 / 显示 / 颜色 设置项,选择不同风格即可,默认自带了五种。
代码结构线
在较新的 Delphi 中,IDE集成了代码结构线的功能,可以方便的浏览代码结构,如下图:
那么,Lazarus 可以吗?没问题!
经过一番设置,可能你已经很难分得清 Delphi 和 Lazarus 了 😂
代码自动补全
勾选 Codetools/标识符补全下的 自动援引(invoke)在输入时 选项
写代码便捷多了:
Hello,Lazarus !
就像任何语言的入门课程一样,我们也从 Hello 开始。
点击菜单 项目/新建项目
可见,其项目类型非常繁多,我们先从一个控制台程序开始,选择 【简单程序】(而不是控制台应用程序,否则创建出来的是带有CuteApp类的控制台程序)
确实非常简单
不仅仅是外观很像,就连快捷键也一模一样,例如 F5设置断点,F9 运行,F7 单步,总之,从Delphi 转过来很自然的就适应了。
下面我们写一行代码,让它输出 Hello,Lazarus!
Lazarus 中用什么函数输出呢?凭借 Delphi 的经验,我们用 writeln 试试。
没有错误波浪线,似乎成了 🤭
F5在 最后一句 end. 处下个断点,F9跑起来试试吧!
选择调试信息格式?Dwarf?
这是什么,在 Delphi 中,没有这些东西啊。
什么是 DWARF
DWARF 全称 Debugging with Attribute Record Formats ,是一种调试信息的存放格式。
DWARF 第一版发布于 1992 年,主要是为 UNIX 下的调试器提供必要的调试信息,例如内存地址对应的文件名以及代码行号等信息,通常用于源码级别调试使用。另外通过 DWARF,还能还原运行时的地址成为可读的源码符号(及行号)。
DWARF 被许多编译器和调试器用来支持源代码级调试。它能满足 C、C++ 和 Fortran 等程序语言的要求,并可扩展到其他语言。DWARF 与体系结构无关,适用于任何处理器或操作系统。它被广泛应用于 Unix、Linux 和其他操作系统,以及独立环境中。
Lazarus 顺应了历史的潮流,因为 DWARF
已经在类 UNIX 系统中逐步替换 stabs
(symbol table strings),成为一种主流的调试信息格式。
目前, DWARF 已经到了第五版。
我们可以简单的理解为 DWARF 是和 Windows 上的符号文件 PDB 的对等 。
按照默认选择,点击确定,看看我们的程序跑起来的样子
很棒,非常顺利 😊
这是我们的第一个 Lazarus 程序,并且它对自己打了招呼!
窗口版的 Hello
点击菜单 项目/新建项目,这次就用默认选择的【应用程序】即可
依然是熟悉的 Delphi VCL 窗口的味道
通过组件面板,添加一个按钮到窗口上,双击按钮,自动生成并定位到 Button1Click 事件,这一系列操作,和 Delphi 也是毫无分别,体验十分顺畅
在 Delphi 中,一般是通过 ShowMessage 函数显示消息窗口的,我们试试 Lazarus 中是否也可以
非常的顺畅!
没有任何学习,凭借 Delphi 的操作、编码经验,我们完美的实现了控制台、窗口两个版本的Hello,Lazarus !
为什么编译出来的程序这么大?
但是,当我看到输出的程序大小为25M后,有点难以接受,即使 Delphi 的调试版本也只有11M多,为什么这么大呢,可以减小一点吗?
官方给出了回答,总的来说主要还是调试信息过于丰富,同时也是可以去除的。
Why are the generated binaries so big?
The binaries are big because they include a lot of debug information necessary for using gdb (GNU Debugger). A debugger is a program that is used to test your code. It uses the extra-information stored in your binary to test it. But once your program is working well, you may delete those infos and reduce the size of the binary.
Quick guide to Lazarus/FPC application size reduction
- 1. Project|Compiler Options|Code|Smart Linkable (-CX) -> Checked
- 2. Project|Compiler Options|Linking|Debugging| Uncheck all except Strip Symbols From Executable (-Xs)
- 3. Project|Compiler Options|Linking|Link Style|Link Smart (-XX) -> Checked
💡 Note: only do this if you don't need to run the debugger. For more details, see Size Matters
Lazarus executable size starts big, but grows very slowly, because of the way the LCL is designed, and its use of certain Free Pascal features (RTTI). Projects that don't use the LCL are much smaller (this is similar to some non-GUI C++ frameworks). This typically requires more manual coding though.
Exclude image readers See Lazarus 1.10.0 release notes#LCL Changes If your app does not use images compressed in one of those formats, then you can exclude it.
即作如下配置
但我在尝试这些设置后,体积减小的微乎其微,最终是将调试符号剥离,即勾选了 【使用外部调试符号文件(-Xg)选项后,体积锐减到 2M 多😀
总结
至此,我们完成了 Lazarus 编程的初体验,无论从外观、操作习惯到编码习惯,Lazarus 和 Delphi 高度一致,只要有 Delphi 的开发经验,就可以丝滑切换到Lazarus,这是一种神奇的体验!🆒
参考
DWARF - Free Pascal wiki
DWARF Debugging Information Format (dwarfstd.org)
Lazarus FAQ - Lazarus wiki (freepascal.org)