resident писал(а):О каких параметрах речь? Условная компиляция не катит?
условная компиляция ... да она там постоянно

...
ок, смотрите ... есть "библиотека"
SourceEditor-onActivate, она в зависимости от "параметра компиляции" {$define in0k_lazIdeSRC_SourceEditor_onActivate___inFocusONLY} ведет себя по разному.
Есть компонент
wndInspector_FF8S(
A.lpk) в котором эта библиотека нужна БЕЗ параметра и другой компонент (
B.lpk) в котором эта библиотека нужна с параметром ...
Варианты:
1. "параметр компиляци" {$define in0k_lazIdeSRC_SourceEditor_onActivate___inFocusONLY} перевести в реалТайм и оформить "библиотеку"
SourceEditor-onActivate как пакет
С.lpk.
Тогда, пакеты
A.lpk и
B.lpk в разделе
Required будут иметь ссылку на
С.lpk, настраивать поведение "библиотеки" в реал тайме ... и типа все должно работать. Но у этого варианта есть минус (для меня он достаточно большой). Целевые пакеты
A.lpk и
B.lpk теряют "атомарность". Т.е. получив исходники пакетов
A.lpk или
B.lpk придется сначала искать и устанавливать пакет
С.lpk. Вероятно, на данный момент, это самый правильный вариант, но мне он почему-то не нравится ...
поэтому ...
2. Ручной копи-Паст, т.е. в пакете
A.lpk есть юнит
UnitA.pas, в
B.lpk юнит
UnitB.pas. Содержимое этих юнитов ОДИНАКОВО, но за счет условной компиляции юниты "ведут" себя по разному. Неудобство в том, что исправив ошибку в одном из них, мне приходится руками копировать изменения в другой. И эта ручная синхронизация утомляет, повозившись с двумя и поняв что тоже самое теперь надо делать для трех ...
я решил попробовать следующее ...
3. Пусть теперь есть единственный
UnitС.pas, он средствами Git подМодуля подтягивается к исходникам пакетов
A.lpk и
B.lpk. Из плюсов: "атомарность" пакета, единый источник. Но, МЕГА касяк, я не смог установить одновременно ОБА пакета (файл
UnitС.pas присутствует одновременно в двух пакетах, на что Lazarus ругается плюется и не работает). Однако, по отдельности, пакеты работают именно так как я и задумывал ...
ну и теперь ... дурацкая идея
3.а. UnitС.pas превращаем в
UnitС.inc, в каждом пакете снова создаем соответствующие юниты
UnitА.pas и
UnitВ.pas, в которых пишем
{$i UnitС.inc} ... но что-то мне подсказывает что это гемор еще тот ... или я опять столкнусь с косяком из пункта 3.
ну и теперь получается: либо мои идеи и желания слишком "странные", или я чего-то не понимаю ...
потому и жажду получить дельный совет от сообщества
