Как сделать зависимости пакета / требования зависимыми от условных символов? - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть пакет Package1, который зависит от пакета PackDependency. .dpk из Package1 содержит это:

requires
  vcl,
  rtl,
  PackDependency,
  dbrtl;

Теперь я хочу иметь эту зависимость, только если определен условный символ CONDITION.Поэтому я вручную изменяю файл .dpk на:

requires
  vcl,
  rtl,
  {$IFDEF CONDITION}
  PackDependency,
  {$ENDIF}
  dbrtl;

Но достаточно ли этого?Я беспокоюсь о файлах .dproj .

У меня есть два пакета, например Package1, с которыми я хочу сделать выше.Один из них имеет следующую строку в файле .dproj :

  <DCCReference Include="PackDependency.dcp"/>

Другие пакеты ' .dproj содержат , а не содержат этострока, хотя пакет также зависит от PackDependency.

Это вызывает некоторые вопросы:

  • Возможно ли require пакет, основанный на условном символе?
  • Если да, нужно ли что-то делать с файлом .dproj?И если да, могу ли я столкнуться с проблемами, если Delphi изменяет определенные области файла?
  • Почему указанная выше строка <DCCReference Include...> включена в один из файлов .dproj, а не в другой (хотяоба пакета имеют зависимость в своих .dpk и также показаны в диспетчере проектов Delphi)?
  • Я подозреваю различное поведение при сборке из Delphi и из командной строки с использованием msbuild.Первый может заглянуть в файл .dpk - но неужели последний?

Моя конечная цель - сборка из командной строки с использованием msbuild.Такое разное поведение между командной строкой и IDE также является важной информацией для меня.

1 Ответ

2 голосов
/ 07 декабря 2011

Это будет хорошо работать, как вы объяснили в вопросе, пока вы не добавите новый модуль в пакет! В этот момент ваши условные определения будут автоматически удалены в IDE, и вам придется вводить их снова (что раздражает).

Я не знаю элегантного способа избежать этого!

Не беспокойтесь о файлах DPROJ, так как они должны поддерживаться IDE, поэтому удаление зависимости в источнике DPK должно (после компиляции) удалять любые соответствующие узлы в DPROJ (где добавление зависимости в DPK должны после компиляции вводить соответствующие узлы в DPROJ.

...