如何使用空字符串覆盖 Delphi 2007 dproj 文件中的设置?

4

这个问题的回答描述了如何通过在msbuild命令行上指定来覆盖Delphi 2007的命令行编译器设置:

msbuild yourproject.dproj /p:DCC_DcpOutput="d:\bla\blub"

我已测试过并且它能够正常工作。

Delphi IDE允许我在项目选项中指定该路径,如果我将其留空,则使用默认路径,这对我来说很好。不幸的是,我有一些第三方包将此路径设置为源代码的子目录。我不想编辑项目设置,而是想在msbuild命令行上覆盖它。

我尝试过以下方法:

msbuild yourproject.dproj /p:DCC_DcpOutput=""

而这个

msbuild yourproject.dproj /p:DCC_DcpOutput=

但是它们都不能满足我的需求。两者的结果都是在.dproj文件所在的目录中生成.dcp文件,而不是默认的输出目录。
如果我明确指定该目录,可以这样做:
msbuild yourproject.dproj /p:DCC_DcpOutput=C:\Users\Public\Documents\RAD Studio\5.0\Dcp

该程序可以工作,但这意味着它将针对特定的Delphi安装,因为这个路径在不同的Windows版本中是不同的(上面是Windows 8,在Windows XP中路径是不同的)。

由于我想在脚本中使用它,该脚本会自动编译并安装给定Delphi 2007安装所需的所有必要包,这可能是在Windows XP、Windows 7 32位、Windows 7 64位和Windows 8 64位上进行,因此我希望避免这种情况的发生。

我可以尝试使用一些环境变量,但没有任何一个似乎符合要求。

那么,有没有办法获得与在.dproj文件中没有DCC_DcpOutput条目时相同的行为?

1个回答

3

当您在项目选项中指定DCP输出目录的空值时,IDE将从环境选项中获取该值。默认值为$(BDSCOMMONDIR)\Dcp,可以在IDE中进行检查。

因此,指定%BDSCOMMONDIR%\Dcp即可解决问题。


1
也许选择%BDSCOMMONDIR%会更好。 - Uwe Raabe
你是从命令提示符中运行这个程序的吗?并且你是否先运行了rsvars.bat文件? - Uwe Raabe
我确实这样做。所以%BDSCOMMONDIR%不起作用很奇怪,因为它在rsvars.bat中肯定被设置了。我会进行调查。 - dummzeuch
第一次尝试时我肯定做错了什么,现在它可以正常运行了。也许只是一个简单的打字错误。如果您将答案更改为%BDSCOMMONDIR%,而不是$(BDSCOMMONDIR),我会接受它。 - dummzeuch
@dummzeuch 你先运行了 RSVars 批处理文件吗? - Jeroen Wiert Pluimers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接