Страницы

среда, 3 декабря 2008 г.

Текучка 7: dcc32 и dpk c полным путём

image

Экспериментировал с относительными путями в LazyDelphiBuilder и столкнулся с тем, что dcc32 умеет компилировать только package-и, которые находятся в текущей папке.

К примеру, попытка выполнить команду из d:\

d:\> "C:\Program Files\CodeGear\RAD Studio\6.0\bin\dcc32.exe" "D:\Work\D2009\VCL\TB2K\Packages\tb2k_d12.dpk" -U"c:\PROGRA~1\codegear\RADSTU~1\6.0\lib";"d:\Work\D2009\VCL\TB2K\Source" -LN"d:\test\dcp" -LE"d:\test\bpl" -N"d:\test\dcu" -DRELEASE -N0"d:\test\dcu"

приводит к появлению сообщения об ошибке “Fatal: file not found первый файл в dpk”. Такая же ерунда происходит при компиляции VirtualTreeView.

А если перед выполнением команды сменить текущую папку на D:\Work\D2009\VCL\TB2K\Packages\ – то всё отработает как надо.

Столкнулся с этим почти месяц назад, но только сейчас, начав писать  пост до меня наконец дошло, что причина не в dcc32 а в том, что в tb2k_d12.dpk указаны относительные пути до исходников.


contains
TB2Version in '..\Source\TB2Version.pas',
TB2Toolbar in '..\Source\TB2Toolbar.pas',

В VirtualTreeView тоже самое.

p.s. Давно заметил, что хорошие идеи приходят при обсуждении. Даже если собеседник не успел вставить ни слова. =)

5 комментариев:

  1. А помните формат DPK в Delphi 3 ? ;)

    ОтветитьУдалить
  2. Я, для компиляции пакаджа, всегда переходил в папку с dpk и компилил оттуда.
    Разумеется не руками переходил, а в bat-файле.
    Перешёл, скомпилил, вернулся, и т.д.

    ОтветитьУдалить
  3. Достаточно убрать пути из dpk, как это было в D3, например:

    ...
    contains
    iconv,
    libexslt,
    libxml2,
    libxmlsec,
    libxslt,
    xml,
    XmlUtils;
    ...

    ОтветитьУдалить
  4. > Anonymous
    Я с Дельфи, только с 6й версии работал. Тройку уже не застал.

    > Достаточно убрать пути из dpk, как это было в D3
    Я только у DevExpress замечал такой подход. Большинство других разработчиков пишут пути полностью. А исправлять чужие исходники, которые переодически ещё и приходится обновлять, - не самое приятное занятие.

    ОтветитьУдалить
  5. >>Давно заметил, что хорошие идеи приходят при обсуждении.

    Правда твоя. Где-то читал: хочешь понять где ошибка, попытайся объяснить работу программы стене или кошке

    ОтветитьУдалить