文件夹结构,用于处理Delphi / Lazarus中的项目共享库

时间:2018-10-24 08:35:46

标签: delphi environment-variables lazarus freepascal

我的项目共享许多公共库,有时一个项目应使用不同版本的代码库。我对某些库进行了修补,以更正错误。

如何组织文件夹结构以简化初始项目设置?

1 个答案:

答案 0 :(得分:0)

保留代码库

要共享代码库,我们应该使用共享的代码存储库,例如VCS存储库或只是共享文件夹。 为了更好地导航,请创建树结构,请使用类似lib-name\lib-name-version的路径。版本可以是版本号,版本名称,VCS变更集ID或任何其他表示lib版本的字符串。如果您要添加补丁程序版本或您自己采用的库名称版本,则应使用lib-name-version-private之类的名称,并添加PatchInfo.txt来描述其他开发者所做的更改。您也可以保留没有源代码的lib的已编译lib DCU文件。

示例libs存储库结构:

+ superobject
|  |- superobject-1.1
|  +- superobject-1.2
+ synapse
|  |- synapse-1.0
|  |- synapse-r209
|  +- synapse-r209-private
+indy
   |- indy-9.0
   +- indy-10.0.0.52

访问库/库路径

要允许任何开发人员将库保留在他想使用OS Environment Vars的任何位置。在构建过程中,项目选项或IDE库路径中的Delphi IDE / Lazarus IDE可以将$(env-var-name)宏替换为env var值。 创建一个环境变量PascalCommonLibs=D:\PascalCommonLibs,指定libs信息库根目录的路径,然后将所需的libs添加到Library Path。

Delphi的库路径示例:

$(PascalCommonLibs)\superobject\superobject-1.2
$(PascalCommonLibs)\synapse\synapse-r209-private

拉撒路的图书馆路径示例:

$Env(PascalCommonLibs)\superobject\superobject-1.2
$Env(PascalCommonLibs)\synapse\synapse-r209-private

现在您甚至可以创建一个默认的库路径列表,每个开发人员都可以将其粘贴到IDE库路径中。

此方法还简化了自动构建配置,只需在脚本中使用PascalCommonLibs env var来指定库或源搜索路径。