有没有一种方法可以指示DCC32使用与IDE相同的库路径(即在Tools/Options/Environment Options/Delphi Options/Library - Win32中使用的路径)?
由于明显的原因,我不希望维护两个目录列表(一个在cfg文件中,一个在Delphi IDE中)。
如果您使用的是Delphi 2006或更高版本,则可以使用MSBuild而不是dcc32,并且MSBuild将使用与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文件中获取条件定义等。
我曾经在Delphi 2007安装在XP x64上的时候,为BDSVER >= 5编写了一个完整的自动化构建工具(因为MSBuild出现故障)。后来,发现一些必需的配置文件没有被正确地复制到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。您需要将它放在您的构建链中。
你的项目目录中应该有一个名为yourprojectnamedpr.cfg的cfg文件,其中实际上应该包含IDE为该项目定义的所有目录。