gpt4 book ai didi

delphi - 组织搜索路径

转载 作者:行者123 更新时间:2023-12-03 18:17:36 26 4
gpt4 key购买 nike

我们通过“工具|选项|环境变量”创建这样的变量:

$(Sources) = D:\Sources\Delphi
$(OurLib) = $(Sources)\OurLib\Src
$(OurApp1) = $(Sources)\Applications\App1\3.x
$(ThirdParty) = $(Sources)\ThirdPartyComponents

我们像这样在项目搜索路径中使用这些变量:

($OurApp1)\Src\Core;($OurApp1)\Src\GUI;($OurApp1)\Src\Plugins;$(ThirdParty)\JVCL

但自 Delphi 2009 以来,这已被打破(同时已修复),因为这些变量不再完全评估(参见 QC #73276)。所以编译器找不到目录中的文件。解决方法:在环境变量中仅使用完整目录。

我们使用这种方法是因为在所有开发人员机器和构建服务器上都可以找到文件,我们只需将 $(Sources) 指向正确的位置。

我们的全局库路径中没有任何内容(Delphi 默认值除外),因为它不在版本控制中,也不会反射(reflect)在其他开发人员或构建机器上。

一个问题是:如果 $(OurLib) 中的一个单元决定在新路径中包含另一个新单元,所有项目都会中断,因为它们找不到这个新单元。然后我们必须遍历所有项目并添加搜索路径。 (顺便说一句:我真的很讨厌搜索路径编辑器……一个简单的备忘录字段不会比这个替换/添加/删除逻辑更好编辑吗?)

我们做的另一件事是不向我们的项目添加很多单元。尤其是来自 $(OurLib) 的所有内容,但我们经常有像插件这样的单元,它们只能通过包含它们来添加功能。对于我们产品的不同版本,我们希望包括不同的单位。由于 Delphi 总是在 .dpr 的 uses 子句中弄乱 $IFDEF,我们通过包含名为“IncludePlugins”的单元来帮助我们,然后包含依赖于 IFDEF 的单元。但是在项目中不包括单元会让导航变得很痛苦。单位不会出现在项目中,它们不会被 Ctrl+12(显示单位)找到,它们不会在代码完成等中显示。

有没有人有更好的方法来处理这些问题?

最佳答案

我们只使用相对路径,任何库总是在 libs 子目录下,而项目源代码位于 src 子目录中。所以我们的搜索路径总是这样的:

..\libs\library1;..\libs\library2\common;

等等

所有库都作为 svn:external 添加到每个项目,因此 checkout 项目时也会自动 checkout 库,搜索路径将始终指向该项目的正确库版本。

并不完美,但大部分时间都有效。

我必须同意搜索路径编辑器,相对路径更糟糕,因为您不能使用“...”按钮,否则 Delphi 将插入绝对路径。

关于delphi - 组织搜索路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com