我在一个项目组中有很多Delphi项目。我可以将Unit output directory
设置为.\$(Platform)\$(Config)
,并且所有dcu文件将根据platform
和config
值保留在目录中。
在我的构建环境中,我想将Unit output directory
设置为.\$(Platform)\$(Config)\$(ProjectFilename)
之类的内容,以便所有DCU文件都保留在当前项目文件标识的自己的目录中。
Project | Options
中的构建事件具有$(ProjectFilename)
宏,但我无法在Unit output directory
中使用它。
我想将.\$(Platform)\$(Config)\$(ProjectFilename)
设置为所有项目' Unit output directory
它会将所有DCU文件保存在唯一的项目目录中。
答案 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文件夹中的任何文件。