Экспериментировал с относительными путями в 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. Давно заметил, что хорошие идеи приходят при обсуждении. Даже если собеседник не успел вставить ни слова. =)
А помните формат DPK в Delphi 3 ? ;)
ОтветитьУдалитьЯ, для компиляции пакаджа, всегда переходил в папку с dpk и компилил оттуда.
ОтветитьУдалитьРазумеется не руками переходил, а в bat-файле.
Перешёл, скомпилил, вернулся, и т.д.
Достаточно убрать пути из dpk, как это было в D3, например:
ОтветитьУдалить...
contains
iconv,
libexslt,
libxml2,
libxmlsec,
libxslt,
xml,
XmlUtils;
...
> Anonymous
ОтветитьУдалитьЯ с Дельфи, только с 6й версии работал. Тройку уже не застал.
> Достаточно убрать пути из dpk, как это было в D3
Я только у DevExpress замечал такой подход. Большинство других разработчиков пишут пути полностью. А исправлять чужие исходники, которые переодически ещё и приходится обновлять, - не самое приятное занятие.
>>Давно заметил, что хорошие идеи приходят при обсуждении.
ОтветитьУдалитьПравда твоя. Где-то читал: хочешь понять где ошибка, попытайся объяснить работу программы стене или кошке