有没有办法指示 DCC32 使用与 IDE 相同的库路径(即在 Tools/Options/Environment Options/Delphi Options/Library - Win32 中)?
出于显而易见的原因,我不想维护两个目录列表(一个在 cfg 文件中,一个在 Delphi IDE 中)。
如果您使用的是 Delphi 2006 或更高版本,则可以使用 MSBuild 代替 dcc32,MSBuild 将使用与 IDE 相同的搜索路径
您的项目目录中应该有一个名为 yourprojectnamedpr.cfg 的 cfg 文件,该文件实际上应该包含 IDE 中为该项目定义的所有目录。
使用 DCC32 从命令行构建需要做很多工作。MSBuild 要容易得多。库路径存储在注册表中,但位置取决于 Delphi 版本,例如(python 代码):
if BDSVER == '5.0':
CompanyText = 'Borland'
else:
CompanyText = 'CodeGear'
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Software\\' + CompanyText + '\\BDS\\' + BDSVER + '\\Library')
IncludePath = _winreg.QueryValueEx(key,'Search Path')[0]
# Then you must replace the environment vars $(BDS), $(BDSCOMMONDOR) etc
IncludePath = ReplaceEnvironVars(IncludePath)
还有很多事情要做。您还必须获取搜索路径,并且必须从 .dproj 文件等中获取条件定义。
当安装在 XP x64 上的 Delphi 2007 出现损坏的 MSBuild 时,我在 python 中编写了一个完整的自动构建工具(对于 BDSVER >= 5)。后来发现,Delphi 安装程序没有将一些必需的配置文件 复制到正确的 .NET 文件夹中。将这些文件复制到正确的位置解决了问题,现在我使用 MSBuild。
这对我有用:
call "C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\rsvars.bat"
msbuild project.dproj
如果您使用较旧的 Delphi(例如 Delphi 7),则必须将所有信息放在 IDE 的“搜索路径”目录选项中。它将保存在您的 .dof 文件中。.dof 文件是项目的主要参考。
每次更改项目配置时,IDE 也会自动更新 .cfg。.cfg 是指定命令行编译器的编译选项。.cfg 和 .dof 都必须受版本控制。
如果不是从 IDE 编辑 .dof 文件,而是手动编辑它,则可以使用dof2cfg实用程序从 .dof 生成新的 .cfg。你必须把它放在你的构建链中。