包(BPL)自动命名后缀

LaK*_*ven 16 delphi bpl package

我为Delphi编写了很多组件和库,其中大部分都需要使用BPL Packaging才能将它们安装到IDE中.

这很简单并且运行良好,直到你想要维护一组Package Project Files(在一个Project Group中),但是也想为不同的Delphi版本编译和分发那些相同的包.

到目前为止,我一直在为每个版本的Delphi创建一个不同的Package Project,并明确地将Delphi版本标识符定义为后缀(例如Kinect_XE.bplKinect_XE2.bpl).

我知道,在包项目的项目选项中,在描述下,有字段LIB前缀和(更重要的是我的需要)LIB后缀.

我进一步意识到,如果我在LIB后缀中放置一个值,它将被附加到已编译的BPL文件名的末尾.

然而,我的问题是,首先是否可以让IDE自动使用IDE/RTL版本号填充LIB后缀字段,如果是,那么......怎么样?

我相当肯定这是可能的,因为看起来vcl120.bpl(及其各自版本的Delphi的对应物)可以仅使用vcl引用(作为要求)您自己的包,而不必键入完整的vcl120.事实上,这是我希望实现的相同行为......我的包可以在内部引用彼此(作为必要),而不必提供特定于版本的引用来容纳后缀.

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

我怀疑我可能需要在LIB后缀字段中输入类似$(VER)(或类似的东西)的值,但这似乎不起作用,我已经搜索谷歌寻找正确的解决方案.

希望你能帮忙!

更新1

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

AutoSuffix插件将在未来24小时内提供(免费)适合所有人,这个问题相应地更新.

更新2

好的...... Delphi 2007很痛苦!到目前为止,我已经将AutoSuffix与2009年的XE2合作,但2007年需要更多时间(耐心赞赏).

更新3

似乎Embarcadero听到了我们对版本之间简化包装统一的集体呼声.

Mark将推动这一过程,看看未来版本的Delphi是否可以容纳{$ LIBSUFFIX AUTO}功能.我希望很快能收到回复是否会出现这种情况.如果是这样,它肯定会影响AutoSuffix在XE2和旧版本上的工作方式(目前它不提供简单的AUTO开关......它有自己的方法).

我现在希望EMB能够认真对待这个请求,将其作为一个不可或缺的特征提供给它,这样就可以在现有版本上使用AutoSuffix来统一所有版本的流程!

Uwe*_*abe 7

AFAIK for Delphi直到XE2,没有这样做的自动化.

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

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

QC83229中建议的解决方案可以更容易地将软件包移植到更新的Delphi版本,但是你仍然坚持使用不向后兼容的dproj文件.

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