gpt4 book ai didi

delphi - 从命令行构建时如何修改/替换选项集文件?

转载 作者:行者123 更新时间:2023-12-03 15:29:29 25 4
gpt4 key购买 nike

我使用以下命令从批处理文件构建包:

msbuild ..\lib\Package.dproj /target:Build /p:config=%1

包的设置取决于选项集:

<Import Project="..\optionsets\COND_Defined.optset" Condition="'$(Base)'!='' And Exists('..\optionsets\COND_Defined.optset')"/>

此选项集定义了我的许多包所依赖的条件符号。该文件如下所示:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DCC_Define>CONDITION;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>OptionSet</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality/>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
</Project>

现在我需要两个构建:一个已定义条件,另一个没有定义条件。我的攻击向量是选项集文件。我对该怎么做有一些想法:

  • 编写一个修改选项集文件的程序,在批量构建之前运行它
  • 修改项目文件并修改选项集路径以包含环境变量,然后在不同位置使用不同的选项集

但是在开始重新发明轮子之前,我想问一下您将如何完成这项任务?也许已经有一些方法可以支持这种情况(例如某些命令行开关,我可以在 Delphi 或批处理文件魔法中配置的东西)。

最佳答案

我解决这个问题的方法是定义多个构建配置,然后在构建时使用 /p:config=XXX 选择适当的配置。它在 IDE 中也能很好地工作,因为您只需双击项目管理器中的构建配置即可激活它。

我个人在执行此操作时使用构建配置的继承,这样我就不必重复自己。例如,我有一个名为 Debug DCUs 的构建配置,它继承自 Debug 配置,只需将 Debug DCUs 选项更改为 True.

为了帮助解释我的意思,以下是我的项目中的构建配置树的样子:

enter image description here

调试 DCU 配置通过此选项集实现:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DCC_DebugDCUs>true</DCC_DebugDCUs>
</PropertyGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>OptionSet</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality/>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
</Project>

现在,我确信您可以使用 /p:DCC_Define=XXX 来完成此操作,但我认为使用构建配置更清晰,这样您就可以确定您得到的是什么IDE 与您从命令行构建获得的内容相同。

我不会推荐您的要点列表中的任何一种方法。在我看来,这些方法非常脆弱。

关于delphi - 从命令行构建时如何修改/替换选项集文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com