Я пишу много компонентов и библиотек для Delphi, большинство из которых требуют использования BPL Packaging, чтобы они могли быть установлены в среду IDE.
Это достаточно просто и работает хорошо, вплоть до тех пор, пока вы не захотите поддерживать один набор файлов проектов пакетов (в одной группе проектов), но также хотите скомпилировать и распространять те же пакеты для разных версий Delphi.
До сих пор я создавал другой проект пакета для каждой версии Delphi и явно определял идентификатор версии Delphi как суффикс (например, Kinect_XE.bpl и Kinect_XE2.bpl).
Мне известно, что в разделе "Параметры проекта для проекта пакета" в разделе "Описание" есть поля префикс LIB и (что более важно для моих нужд) Суффикс LIB.
Мне известно, что если я поместил значение в LIB суффикс, он будет добавлен в конец скомпилированного имени файла BPL.
Однако первый вопрос заключается в том, возможно ли, чтобы IDE автоматически заполнила поле LIB суффикс с номером версии IDE/RTL, и если так... как?
Я уверен, что это возможно, поскольку, как представляется, vcl120.bpl (и его сопоставления для каждой соответствующей версии Delphi) можно ссылаться (как требования) на ваши собственные пакеты, используя просто vcl вместо того, чтобы набирать полный vcl120. Это, по сути, такое же поведение, на которое я надеюсь достичь... где мои пакеты могут интрареплицировать друг друга (как необходимо) без необходимости предоставлять ссылки на конкретные версии для размещения суффиксов.
Не менее важно, чтобы это разрешило мне поддерживать один набор файлов проекта в одной группе проектов (с очевидным исключением XE2, где его файлы проекта не обязательно хорошо себя ведут с предыдущими версиями Delphi из-за добавление платформ).
Я подозреваю, что мне может потребоваться значение $(VER) (или что-то подобное) в поле LIB суффикс, но это, похоже, не работает, и Я искал Google для поиска правильного решения.
Надеюсь, вы сможете помочь!
ОБНОВЛЕНИЕ 1
Теперь я пишу плагин IDE для использования с (по крайней мере) Delphi 2007 для XE2, который дает DLL и BPL проекты новый параметр AutoSuffix. При включенном подключении любая IDE с установленным плагином AutoSuffix немедленно применит к проекту подходящий суффикс версии IDE.
Плагин AutoSuffix будет доступен (свободно) для всех в течение следующих 24 часов, и этот вопрос будет соответствующим образом обновлен.
ОБНОВЛЕНИЕ 2
Хорошо... Delphi 2007 - это боль! Я сделал AutoSuffix с 2009 года до XE2, но в 2007 году требуется немного больше времени (терпение оценивается).
ОБНОВЛЕНИЕ 3
Казалось бы, что Embarcadero услышал наш коллективный крик для более простой унификации пакетов между версиями.
Марк собирается пропустить это, чтобы увидеть, могут ли будущие версии Delphi использовать функцию {$ LIBSUFFIX AUTO}. Я надеюсь услышать очень скоро, будет ли это так. Если это так, это, безусловно, влияет на то, как AutoSuffix должен будет работать с XE2 и более старыми версиями (поскольку в настоящее время он не предоставляет простой переключатель AUTO.. у него есть свой собственный метод).
Моя надежда теперь в том, что EMB серьезно воспримет этот запрос, предоставит его как неотъемлемую функцию в будущем, так что это станет простым примером использования AutoSuffix в существующих версиях для унификации процесса по всем версиям!