FPC编译顺序

在 FPC 项目 1 中使用时,包是一个含糊不清的名字。有时,package 仅指仓库 packages/目录中的单元,有时它还包括项目中其它单独可编译部分(如编译器,rtl,fcl,ide,fvision,lazarus,installer 和 utils)。在这里,它是后者。

从 FPC 2.2.4 2 开始重新组织包的目录结构。最重要的是,fpcmake 系统现在可以确定自己的依赖性,因此所有软件包(包括 FCL 和 FV)都可以移动到 /fpc/packages。这是个伟大的功能,在大简化了包的构建和维护。FCL 的单元也被重新组合成多个包。

当然,在构建 FPC 时应该遵循一定的顺序,在顶级Makefile中硬编码。这是因为有些软件包依赖其它软件包,因此需要首先构建。通常的顺序是:

  1. 构建编译器 (make cycle) 编译3次编译器,3次 rtl。

  2. 重建 RTL 智能链接。

  3. 构建包目录,包括 FCL 和 FV 包。

  4. 构建文本模式 IDE。

  5. Fpcmake 在 utils/fpcm 引入 utils/ 目录。

Lazarus 可以在完成后构建(使用或不使用IDE)。但是,首先安装主构建。 在 fpc 存储库的标准版本中不构建某些目录:

  1. 包演示和示例目录

  2. 回归测试组件(tests/)

编译示例,可以下载到包目录并执行 make 来编译。

一些有趣的构建脚本

其中是一些脚本用于构建版本、测试交叉编译的。

  • fpc/installl/install.sh 是 unix 安装脚本。很好的演示了平台名(GNU->FPC)的转换。

  • fpc/install/cross/buildcrossbinutils 是一个批量构建交叉 binutils 的脚本。

  • fpc/install/cross/buildcrosssnapshot 是构建交叉编译快照。基本可用,但是 mkxmlrpc 和 文本模式IDE 共享链接很麻烦。

  • fpc/install/makepack 是一个发布构建的脚本。它需要目标名称(i386-linux, i386-win32 等)作为参数。

1

查看 http://wiki.freepascal.org/packages

2

随着 fpcmake 系统的改进,这种重组成为可能。但是,随着时间的推移,fpcmake 系统将消失,并被替换为已包含在 2.2.4+ 中进行测试的 fpmake/fppkg 系统。