delphi - 在 Delphi/Lazarus 中处理项目共享库的文件夹结构
问题描述
我的项目共享许多公共库,有时一个项目应该使用不同版本的代码库。我修补了一些库以纠正错误。
如何组织文件夹结构以使初始项目设置更容易?
解决方案
保留代码库
要共享代码库,我们应该使用共享代码存储库,例如 VCS 存储库或只是共享文件夹。为了更好地导航创建一个树结构,使用这样的路径lib-name\lib-name-version
。版本可以是版本号、版本名称、VCS 变更集 ID 或任何其他字符串以指示 lib 版本。如果您想添加您喜欢的库名称的补丁或采用的版本,lib-name-version-private
并添加 PatchInfo.txt 描述您对其他开发人员所做的更改。您还可以为没有源代码的库保留已编译的库 DCU 文件。
示例库存储库结构:
+ 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 值。创建一个 env var PascalCommonLibs=D:\PascalCommonLibs
,指定您的库存储库根路径,然后将您想要的库添加到库路径。
Delphi 的库路径示例:
$(PascalCommonLibs)\superobject\superobject-1.2
$(PascalCommonLibs)\synapse\synapse-r209-private
Lazarus 的库路径示例:
$Env(PascalCommonLibs)\superobject\superobject-1.2
$Env(PascalCommonLibs)\synapse\synapse-r209-private
现在您甚至可以创建一个默认库路径列表,每个开发人员都可以将其粘贴到 IDE 库路径中。
此方法还简化了自动构建配置,只需PascalCommonLibs
在脚本中使用 env var 指定库或源搜索路径。
推荐阅读
- itext - 有没有办法用 iTextsharp 制作饼图?
- javascript - 为什么即使元素不在视口中,我的函数也会添加一个类?
- triggers - 如何在下午 1 点和 6 点发送通知电子邮件?
- r - 使用 rvest 包的网页抓取结果为空
- python - Bash 脚本 + 没有名为 numpy 的模块
- arduino - 如何通过 OSC 消息打开/关闭 NeoPixels LED 动画?
- java - 尽管 autoApply=false 且属性未使用 @Convert 注释,但仍应用 JPA 属性转换器
- java - 如何停止 LOCAL Ignite 缓存的“忽略查询投影”警告
- java - 如何立即从 Mono.zip 返回服务器发送事件?
- unicode - 就地转换案例