我们通过“工具|选项|环境变量”创建变量这样的:组织的搜索路径
$(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
但这自德尔福2009年以来已经破裂(同时固定),因为这些变量不再被完全评估(见QC#73276)。所以编译器找不到目录中的文件。解决方法:仅使用环境变量中的完整目录。
我们使用这种方法,因为在所有开发人员机器和构建服务器上都可以找到文件,我们只需将$(Sources)指向正确的位置即可。
我们没有任何东西在我们的全局库路径中(Delphi默认值除外),因为这不在版本控制中,并且不会反映在其他开发人员或构建机器上。
一个问题是:如果$(OurLib)中的一个单位决定在另一个新路径中包含另一个新单元,则所有项目都会因为没有找到此新单元而中断。然后我们必须通过所有项目并添加搜索路径。 (顺便说一句:我真的很讨厌的搜索路径编辑器......不会是一个简单的备注字段更好的编辑比这个替换/添加/删除逻辑?)
我们做的不是加入许多单位的另一件事情我们项目。尤其是来自$(OurLib)的所有内容,但我们经常拥有像插件这样的单元,只有通过包含它们才能添加功能。对于我们产品的不同版本,我们希望包含不同的单位。由于Delphi总是在.dpr的uses子句中混淆$ IFDEFs,因此我们通过包含名为“IncludePlugins”的单元来帮助我们,这些单元包含依赖于IFDEF的单元。 但是不包括项目中的单位导致痛苦。单位不会出现在项目中,他们没有按Ctrl + 12(显示单元)发现,他们不是在代码完成显示等
大家有更好的方法来解决这些问题?
事实上,我们就此别过。我们的构建机器将$(Sources)映射到S:并将得到的二进制文件放在T:创建设置的地方。我们的工具链的所有应用程序都不支持更改根目录。 – 2009-04-23 09:08:12