首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包(BPL)自动命名后缀

包(BPL)自动命名后缀
EN

Stack Overflow用户
提问于 2012-01-09 16:51:27
回答 4查看 3.1K关注 0票数 19

我为Delphi编写了许多组件和库,其中大多数组件和库都需要使用BPL打包,以便将它们安装到IDE中。

这很简单,而且运行良好,直到您想要维护一组单独的包Project (在单个Project中),但也希望为不同的Delphi版本编译和分发相同的包。

到目前为止,我已经为每个版本的Delphi创建了一个不同的包项目,并显式地将Delphi版本标识符定义为后缀(例如Kinect_XE.bpl和Kinect_XE.bpl)

我知道,在Package的Project中,下面有字段LIB前缀和(更重要的是为了满足我的需要) LIB后缀

我还知道,如果我在LIB后缀中添加了一个值,它将被追加到编译的BPL文件名的末尾。

但是,我的问题是,首先,是否可以让IDE自动填充带有IDE/RTL版本号的LIB后缀字段,如果是的话.多么?

我相当肯定这是可能的,因为看起来vcl120.bpl (及其对应的相应版本的Delphi)可以使用vcl来引用(作为需求)您自己的包,而不必键入完整的vcl120。事实上,我希望达到同样的行为.其中,我的包可以互相引用(作为必要的),而不必提供特定版本的引用来容纳后缀。

同样重要的是,解决这个问题将使我能够在一个项目组中维护单个项目文件集(除了XE2之外,由于平台的添加,它的项目文件在以前版本的Delphi中不一定运行得很好)。

我怀疑我可能需要将类似于$(VER) (或类似的东西)的值放在LIB后缀字段中,但这似乎行不通,我已经搜索过谷歌寻找正确的解决方案。

希望你能帮忙!

更新1

我现在正在为XE2编写一个IDE插件(至少与Delphi2007一起使用),这为DLL和BPL项目提供了一个名为AutoSuffix的新选项。当切换时,任何安装了AutoSuffix插件的IDE都会立即将正确的IDE版本后缀应用于项目。

AutoSuffix插件将在今后24小时内(免费)提供给每个人,并相应地更新这个问题。

更新2

好吧..。德尔福2007是一个痛苦!到目前为止,我已经让AutoSuffix在XE2上工作了,但是2007年需要更多的时间(耐心感谢)。

更新3

看起来,Embarcadero似乎听到了我们的集体呼声,要求在不同版本之间实现更简单的包统一。

Mark将推动这一过程,看看Delphi的未来版本是否能够适应{$LIBSUFFIX AUTO}特性。我希望很快就能得到答复,情况是否如此。如果是这样的话,它肯定会影响AutoSuffix在XE2和旧版本上的工作方式(因为目前它没有提供简单的自动开关。它有自己的方法)。

我现在希望EMB会认真对待这一请求,将其作为未来的一个整体特性,从而成为在现有版本上使用AutoSuffix统一所有版本的过程的简单案例!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-09 19:40:45

AFAIK的德尔菲到XE2,没有自动做这件事。

关于requires子句:当您使用require另一个包时,实际上使用的是dcp,它不继承LIBSUFFIX。因此,在编译时需要VCL.dcp就足够了,而VCL160.bpl实际上是在运行时使用的。DCP包括完整的BPL名称来解决这个问题。

这使得LIBSUFFIX方法优于简单的“为Delphi的每个版本重命名包”。

QC83229中建议的解决方案可以使将包移植到较新的Delphi版本变得更容易,但这样您仍然只能使用不向后兼容的dproj文件。

我通常对每个Delphi版本使用不同的文件夹,其中只存储项目文件。对于一个新的Delphi版本,我只需复制一个文件夹并更改LIBSUFFIX。

票数 7
EN

Stack Overflow用户

发布于 2012-01-09 17:23:48

LIBSUFFIX指令在*.dpk文件中,您可以手动编辑*.dpk文件。

例如,你可以写

代码语言:javascript
复制
{$IFDEF CONDITIONALEXPRESSIONS}
   {$IF CompilerVersion = 20.0}
{$LIBSUFFIX '120'}
   {$IFEND}
   {$IF CompilerVersion = 21.0}
{$LIBSUFFIX '140'}
   {$IFEND}
{$ENDIF}

不好的是,IDE不尊重您对*.dpk文件的手工编辑,然后删除它们,然后在包中进行更改。这就是为什么一些在*.dpk文件中使用条件定义的组件供应商,如果被要求保存更改,就在安装指令中说“不行”。

票数 3
EN

Stack Overflow用户

发布于 2012-05-20 15:39:09

我的建议是将它作为一个可配置的选项添加到项目选项集中(请参见QC #86491)。与更新所有包不同,只更新一个选项集文件就足够了。

实际上,Delphi /XE2中的选项集文件似乎可以识别DllSuffix标记。将<DllSuffix>160</DllSuffix>添加到选项集文件的<PropertyGroup>部分将导致将后缀附加到项目管理器中的包中。但是,您仍然必须打开项目选项并单击OK,以便将其保存到.dpk文件中。

我同意这将是非常有用的这个功能(我也认为在RTL中的软件包)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8792059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档