.. index:: single: FPC编译顺序 FPC编译顺序 ---------------------- 在 FPC 项目 [#FPCCOMPILEORDER1]_ 中使用时,包是一个含糊不清的名字。有时,package 仅指仓库 packages/目录中的单元,有时它还包括项目中其它单独可编译部分(如编译器,rtl,fcl,ide,fvision,lazarus,installer 和 utils)。在这里,它是后者。 从 FPC 2.2.4 [#FPCCOMPILEORDER2]_ 开始重新组织包的目录结构。最重要的是,fpcmake 系统现在可以确定自己的依赖性,因此所有软件包(包括 FCL 和 FV)都可以移动到 /fpc/packages。这是个伟大的功能,在大简化了包的构建和维护。FCL 的单元也被重新组合成多个包。 当然,在构建 FPC 时应该遵循一定的顺序,在顶级Makefile中硬编码。这是因为有些软件包依赖其它软件包,因此需要首先构建。通常的顺序是: 1. 构建编译器 (make cycle) 编译3次编译器,3次 rtl。 #. 重建 RTL 智能链接。 #. 构建包目录,包括 FCL 和 FV 包。 #. 构建文本模式 IDE。 #. Fpcmake 在 utils/fpcm 引入 utils/ 目录。 Lazarus 可以在完成后构建(使用或不使用IDE)。但是,首先安装主构建。 在 fpc 存储库的标准版本中不构建某些目录: 1. 包演示和示例目录 #. 回归测试组件(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 等)作为参数。 .. [#FPCCOMPILEORDER1] 查看 http://wiki.freepascal.org/packages .. [#FPCCOMPILEORDER2] 随着 fpcmake 系统的改进,这种重组成为可能。但是,随着时间的推移,fpcmake 系统将消失,并被替换为已包含在 2.2.4+ 中进行测试的 fpmake/fppkg 系统。