我为 Delphi 编写了很多组件和库,其中大部分都需要使用 BPL 封装,以便它们可以安装到 IDE 中。
这很简单并且运行良好,直到您想要维护一组包项目文件(在单个项目组中),但还想为不同的 Delphi 版本编译和分发这些相同的包。
到目前为止,我一直在为每个 Delphi 版本创建一个不同的包项目,并明确定义一个 Delphi 版本标识符作为后缀(例如Kinect_XE.bpl和Kinect_XE2.bpl)。
我知道,在Package Project的Project Options中,在Description下,有字段LIB prefix和(更重要的是我的需要)LIB suffix。
我进一步知道,如果我在LIB suffix中放置一个值,它将被附加到已编译 BPL 文件名的末尾。
然而,我的问题是,首先是否可以让 IDE使用IDE/RTL 版本号自动填充LIB 后缀字段,如果可以……如何?
我相当确定这是可能的,因为看起来vcl120.bpl(以及每个相应版本的 Delphi 的对应项)可以仅使用vcl来引用(作为要求)您自己的包,而不必键入完整的vcl120 . 事实上,这也是我希望实现的相同行为……我的包可以相互引用(必要时),而不必提供特定于版本的引用来容纳后缀。
同样重要的是,解决这个问题将使我能够在单个项目组中维护一组项目文件(XE2 明显例外,由于平台添加,它的项目文件不一定与以前版本的 Delphi 表现得很好)。
我怀疑我可能需要在LIB 后缀字段中输入一个类似$(VER)的值(或类似的值) ,但这似乎不起作用,我已经搜索谷歌寻找正确的解决方案。
希望你能帮忙!
更新 1
我现在正在编写一个与(至少)Delphi 2007 到 XE2 一起使用的 IDE 插件,它为 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以统一所有版本的流程的简单案例!