我有一个包Package1
,它取决于包PackDependency
。 Package1
的 .dpk 包含以下内容:
requires
vcl,
rtl,
PackDependency,
dbrtl;
现在我想只有在定义了条件符号CONDITION
时才有这个依赖。因此,我手动将 .dpk 文件更改为:
requires
vcl,
rtl,
{$IFDEF CONDITION}
PackDependency,
{$ENDIF}
dbrtl;
但这够了吗?我担心 .dproj 文件。
我有两个像Package1
这样的软件包我想用上面的方法做。其中一个在 .dproj 文件中包含以下行:
<DCCReference Include="PackDependency.dcp"/>
其他软件包' .dproj 不包含此行,即使该软件包也依赖于PackDependency
。
这提出了一些问题:
require
基于条件符号的包?<DCCReference Include...>
行包含在其中一个.dproj文件中而不包含在另一个中(尽管两个包在其.dpk中都有依赖关系,并且也显示在Delphi项目管理器中)?我的最终目标是使用msbuild从命令行构建。因此命令行和IDE之间的不同行为对我来说也是重要的信息。
答案 0 :(得分:2)
这将在您在问题中解释时正常工作,直到您向包中添加新单元!此时,您的条件定义将被IDE自动删除,您将不得不再次将它们放入(这很烦人)。
我知道没有优雅的方法来避免这种情况!
不要太担心DPROJ文件......因为它们应该由IDE维护,因此删除DPK源中的依赖项应该(在编译时)删除DPROJ中的任何相应节点(添加时)在编译时,DPK中的依赖项应该将相应的节点注入到DPROJ中。