如何在每个项目文件夹中保存dcu文件(例如:。\ $(平台)\ $(配置)\ $(ProjectFilename)?

时间:2014-12-10 03:07:27

标签: delphi

我在一个项目组中有很多Delphi项目。我可以将Unit output directory设置为.\$(Platform)\$(Config),并且所有dcu文件将根据platformconfig值保留在目录中。

在我的构建环境中,我想将Unit output directory设置为.\$(Platform)\$(Config)\$(ProjectFilename)之类的内容,以便所有DCU文件都保留在当前项目文件标识的自己的目录中。

Project | Options中的构建事件具有$(ProjectFilename)宏,但我无法在Unit output directory中使用它。

我想将.\$(Platform)\$(Config)\$(ProjectFilename)设置为所有项目' Unit output directory它会将所有DCU文件保存在唯一的项目目录中。

2 个答案:

答案 0 :(得分:6)

我巧合地找到了这个答案。我选择了一个项目和(ms)构建,其详细程度为diagnostic。通过研究msbuild的输出,我只需选择一个变量:MSBuildProjectName并在我的optset文件中指定由300个项目共享:

<DCC_DcuOutput>.\$(Platform)\$(Config)\$(MSBuildProjectName)</DCC_DcuOutput>

我尝试在IDE中构建所有项目。令人惊讶的是,Delphi为每个构建的项目创建文件夹,并将DCU文件分别保存在文件夹中。

答案 1 :(得分:1)

Build Events 预处理器支持一系列宏,其中一些宏等同于某些环境变量。

DCU输出文件夹设置仅支持环境变量,而不支持这些宏。

可能的替代方法

要获取每个项目 DCU文件夹,您可以采用不同的方法,使 dcu 成为当前项目的子文件夹,例如:

Unit Output Directory: .\dcu

(或者只是&#34; dcu&#34;,但我更喜欢包含&#34;。\&#34;如果只是为了明确相关设置是有意的话)

这实现了保持每个项目的DCU彼此分离的目标,但意味着您不再将所有DCU都放在项目文件夹之外的单独位置。

如果这对您很重要,您当然可以在此相对路径中使用$(platform)和$(config)变量:

Unit Output Directory: .\dcu\$(platform)\$(config)

这是否是一种可接受的妥协方式,只能在您的情况下说明。

将DCU保留在项目文件夹以外的位置的意图通常是:

  • 保留项目文件夹&#34;清理&#34;

  • 避免维护一长串的&#34;忽略&#34; VCS(SubVersion / Git等)中每个dcu文件的条目

将DCU保留在项目子文件夹中实现了第一个,第二个问题通过能够仅将DCU子文件夹添加到VCS忽略列表而大大简化,以忽略该DCU文件夹中的任何文件。