当前位置 : 主页 > 编程语言 > delphi >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
我使用以下命令从批处理文件构建包: msbuild ..\lib\Package.dproj /target:Build /p:config=%1 包的设置取决于选项集: Import Project="..\optionsets\COND_Defined.optset" Condition="'$(Base)'!='' And Exists('..\options
我使用以下命令从批处理文件构建包:

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 DCU的构建配置,它继承自Debug配置,只是将Debug DCU选项更改为True.

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

调试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获得的内容与您从IDE获得的内容相同命令行构建.

我不建议你的子弹点列表中的任何一种方法.这些方法对我来说非常脆弱.

网友评论