Delphi命令行编译器-使用与IDE相同的库路径

4

有没有一种方法可以指示DCC32使用与IDE相同的库路径(即在Tools/Options/Environment Options/Delphi Options/Library - Win32中使用的路径)?

由于明显的原因,我不希望维护两个目录列表(一个在cfg文件中,一个在Delphi IDE中)。

5个回答

5

如果您使用的是Delphi 2006或更高版本,则可以使用MSBuild而不是dcc32,并且MSBuild将使用与IDE相同的搜索路径。


不,它不会被使用。从IDE设置中的Hudson+MSBuild单元搜索路径没有被使用。 - Sergey Miryanov

1

使用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。


2
库和浏览路径也位于 C:\Documents and Settings<User Name>\Application Data\CodeGear\BDS\6.0\EnvOptions.proj(在 XP 上)或 C:\Users<User Name>\AppData\Roaming\CodeGear\BDS\6.0\EnvOptions.proj(如果您使用的是 Vista 或 Windows 7)-请参阅https://dev59.com/qHI-5IYBdhLWcg3wf4hD。 - mjn
@mjustin,是的,处理这些情况需要更多的工作。最好只使用MSBuild。 - Caleb Hattingh
我从来没有使用过命令行的 MSBuild - Apache Ant 和 build.xml 文件让我感到满意,但可能因人而异 :) - mjn
你只需要在 C:\source> 中输入 msbuild MyAppName.dproj 即可。 - Caleb Hattingh

1
这对我来说有效:

call "C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\rsvars.bat"
msbuild project.dproj

1

如果您使用旧版本的Delphi(例如Delphi 7),必须将所有信息放在IDE中的"搜索路径"目录选项中。它将保存在您的.dof文件中。.dof文件是项目的主要参考文件。

IDE还会在每次更改项目配置时自动更新.cfg。cfg指定命令行编译器的编译选项。.cfg和.dof都必须在版本控制下。

如果您不想从IDE中编辑.dof文件,而是手动编辑它,则可以使用dof2cfg实用程序从.dof生成新的.cfg。您需要将它放在您的构建链中。


1

你的项目目录中应该有一个名为yourprojectnamedpr.cfg的cfg文件,其中实际上应该包含IDE为该项目定义的所有目录。


2
这就是我想要避免的;我不想维护多个目录列表。如果我更改了搜索路径,我不想也要为每个项目更改cfg文件。 - kes
但只包括项目目录,不包括IDE环境选项,特别是不包括“lib”路径。 - david

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