delphi – 如何从命令行构建时修改/替换选项集文件?
我使用以下命令从批处理文件构建包:
msbuild ..libPackage.dproj /target:Build /p:config=%1 包的设置取决于选项集: <Import Project="..optionsetsCOND_Defined.optset" Condition="'$(Base)'!='' And Exists('..optionsetsCOND_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获得的内容相同命令行构建. 我不建议你的子弹点列表中的任何一种方法.这些方法对我来说非常脆弱. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |