Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизКомпилятор в Делфи Найти похожие ветки
← →
harisma © (2012-11-07 16:06) [0]Существует ли возможность как-то перехватить и посмотреть набор параметров, "скармливаемых" компилятору при компиляции проекта в IDE? Дело в том, что когда я компилирую свой проект с помощью консольного компилятора dcc32, передавая ему такой же набор параметров, что и на закладке Compiler проекта, получается файл другого размера и более того, поскольку в проекте используется нестандартный компонент вместо использовавшегося ранее стандартного, почему-то при компиляции через консоль подтягивается именно старый компонент, а не новый. То есть где-то не заменяются ссылки. Кто мне может в этом помочь?
← →
брат Птибурдукова (2012-11-07 16:11) [1]
> Существует ли возможность как-то перехватить и посмотреть
> набор параметров, "скармливаемых" компилятору при компиляции
> проекта в IDE?
В новых IDE это пишется в окошке messages
← →
harisma © (2012-11-07 16:29) [2]Это я знаю. А как в старых это же самое получить?
← →
Вячеслав (2012-11-07 17:44) [3]
> поскольку в проекте используется нестандартный компонент
> вместо использовавшегося ранее стандартного, почему-то при
> компиляции через консоль подтягивается именно старый компонент,
> а не новый
Проверить пути в Bin\dcc32.cfg
← →
harisma © (2012-11-07 18:25) [4]
> Проверить пути в Bin\dcc32.cfg
А с чем их сравнивать? У меня там по умолчанию всего 2 параметра записаны:
-aWinTypes=Windows;WinProcs=Windows;DbiProcs=BDE;DbiTypes=BDE;DbiErrs=BDE
-uC:\Delphi5\Lib
А из опций проекта на закладке Directories/Conditionals что туда надо вписать?
← →
TUser © (2012-11-07 23:45) [5]
> -uC:\Delphi5\Lib
А нестандартный компонент где лежит? Вообще, прописать туда путь в *.cfg проекта - не помогает?
← →
DVM © (2012-11-08 00:03) [6]Все параметры передаваемые компилятору лежат в файле проекта делфи.
← →
Дмитрий С © (2012-11-08 00:19) [7]всегда можно подманить exe-ник компилятора на свой :)
← →
Германн © (2012-11-08 01:18) [8]
> DVM © (08.11.12 00:03) [6]
>
> Все параметры передаваемые компилятору лежат в файле проекта
> делфи.
>
А что есть "файл проекта"?
← →
Вячеслав (2012-11-08 10:18) [9]
> А с чем их сравнивать? У меня там по умолчанию всего 2 параметра
> записаны:
Я последнее время средой для компиляции практически не пользуюсь, только батниками.
В dcc32.cfg просто укажите путь к нужному вам компоненту. Сам файлик может валяться в Bin или в текущем каталоге.
← →
Writer32 (2012-11-08 10:24) [10]Чем батники лучше Ide-компиляции?
← →
DVM © (2012-11-08 10:27) [11]
> Writer32 (08.11.12 10:24) [10]
> Чем батники лучше Ide-компиляции?
Автоматическая сборка может происходить совсем на другой машине без участия человека вслед за изменениями в SVN.
← →
Вячеслав (2012-11-08 14:27) [12]
> Автоматическая сборка может происходить совсем на другой
> машине без участия человека вслед за изменениями в SVN.
Да даже если и не на другой. У меня на компе несколько веток одного проекта, которые иногда собираются с разными версиями компонентов.
Кроме того, как правило, собирается несколько проектов одновременно.
Те же директивы условной компиляции, общие для нескольких проектов, значительно проще в батнике задать, чем лазить в опциях.
Кроме того, батники позволяют выполнять посторонние задачи, например, одновременную сборку rc-файлов. В одном из проектов у меня до вызова dcc32.exe автоматически генериться pas-файл с константами ошибок для журнала Windows. Одним словом автоматизация. )
← →
брат Птибурдукова (2012-11-08 14:45) [13]Оффтоп: ох, как я рад, что ушёл с фирмы, которая содержала зоопарк версий...
← →
DVM © (2012-11-08 15:28) [14]Вообще в новых версиях Delphi батники не нужны. А нужен MSBuild и таски для него, т.к. Delphi генерирует xml файлы проекта в совместимом с MSBuild формате. Если собирать просто бат файлом приходится все параметры компилятора переносить в этот самый бат файл и городить кучу разного геморроя, типа Unit Aliases и прочее, иначе проект не соберется. В файле проекта же все зависимости уже есть в том виде в котором они передаются компилятору из IDE. В том же виде их и берет MSBuild.
Кроме этого есть еще FinalBuilder но мне он как то не приглянулся, вот если бы он был плотно интегрирован с IDE, а так его проекты сами по себе а у IDE сами по себе.
← →
harisma © (2012-11-08 16:34) [15]
> А нестандартный компонент где лежит? Вообще, прописать туда
> путь в *.cfg проекта - не помогает?
Нестандартный компонент вставлен в наш .bpl пекейдж. Исходник его лежит вместе с остальными исходниками пекейджа.
Проект (это dll) имеет формы, на которых встречается данный компонент, и компилится с опцией Build with runtime packages. Когда я компилю длл из под IDE - она нормально подгружается и ее форма нормально отображается, но когда я компилю эту же длл при помощи dcc32 с параметрами в командной строке - то длл подгружается, но при попытке отобразить форму пишет, что Class TCheckListBox not found (именно этот компонент, использовавшийся в старой версии, был заменен на этот нестандартный).
Подстановка вместо dcc32.cfg переименованного *.cfg проекта ничего не дала - проблема осталась. :(
← →
брат Птибурдукова (2012-11-08 17:36) [16]
> harisma © (08.11.12 16:34) [15]
с пакетами что-то недомутили
← →
harisma © (2012-11-08 18:20) [17]
> > harisma © (08.11.12 16:34) [15]
> с пакетами что-то недомутили
А чего ж тогда в IDE все нормально?
Кроме того, юнит, где реализован данный компонент (визуальный и установленный в палитру), я ведь в длл-ке в соответствующем месте указываю. Что же ему "не алё"?
← →
Exception (2012-11-08 18:23) [18]смотри dof-файлы. в 7-ке все параметры компиляции там.
← →
harisma © (2012-11-08 18:32) [19]У меня Д5. Но это собственно сути не меняет :(
← →
брат Птибурдукова (2012-11-08 18:35) [20]
> в соответствующем месте указываю
А RegisterClasses вызываешь?
> А чего ж тогда в IDE все нормально?
В IDE нормально, а в командной строке недомутили...
← →
Игорь Шевченко © (2012-11-08 18:38) [21]IDE ничего не делает сверх того, что можно сделать файлами конфигурации
← →
harisma © (2012-11-08 18:58) [22]
> А RegisterClasses вызываешь?
RegisterClasses естественно вызывается, так как в этом пекейдже кроме этого компонента еще и другие регистрируются.
> > А чего ж тогда в IDE все нормально?
> В IDE нормально, а в командной строке недомутили...
Возможно. Вот только знать бы что именно недомутили?
Если я тут опубликую командную строку и содержимое файла конфигурации, поможете найти несоответствие?
← →
брат Птибурдукова (2012-11-08 19:20) [23]
> Если я тут опубликую командную строку и содержимое файла
> конфигурации, поможете найти несоответствие?
Точно можно только сказать, что если не опубликуешь, то помочь не сможем
← →
harisma © (2012-11-08 19:33) [24]Тогда вот командная строка:
C:\Delphi5\Bin\dcc32.exe C4Journ.dpr -EC:\Projects\Office\Bin\ClientSide -B -H -W -$D- -$O+
А вот содержимое файла конфигурации проекта:
-$A+
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I-
-$J+
-$K-
-$L+
-$M-
-$N+
-$O-
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W+
-$X+
-$YD
-$Z1
-GD
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$02880000
-E"C:\Projects\Office\Bin\ClientSide"
-N"C:\Projects\Office\Common\DCU"
-LE"c:\delphi5\Projects\Bpl"
-LN"c:\delphi5\Projects\Bpl"
-U"c:\delphi5\Lib\Debug;C:\COMPON~1\JVCL_J~1\jcl\lib\d5\debug;C:\Projects\Office\ Common\DCP;C:\Projects\Office\Common\DCU;C:\Components\OfficeComponents;C:\Proje cts\Office\Bin\ClientSide;C:\Components\JVCL+JCL 3_36\jvcl\lib\d5;C:\Components\ZipTV;C:\Components\JVCL+JCL 3_36\jvcl\resources"
-O"c:\delphi5\Lib\Debug;C:\COMPON~1\JVCL_J~1\jcl\lib\d5\debug;C:\Projects\Office\ Common\DCP;C:\Projects\Office\Common\DCU;C:\Components\OfficeComponents;C:\Proje cts\Office\Bin\ClientSide;C:\Components\JVCL+JCL 3_36\jvcl\lib\d5;C:\Components\ZipTV;C:\Components\JVCL+JCL 3_36\jvcl\resources"
-I"c:\delphi5\Lib\Debug;C:\COMPON~1\JVCL_J~1\jcl\lib\d5\debug;C:\Projects\Office\ Common\DCP;C:\Projects\Office\Common\DCU;C:\Components\OfficeComponents;C:\Proje cts\Office\Bin\ClientSide;C:\Components\JVCL+JCL 3_36\jvcl\lib\d5;C:\Components\ZipTV;C:\Components\JVCL+JCL 3_36\jvcl\resources"
-R"c:\delphi5\Lib\Debug;C:\COMPON~1\JVCL_J~1\jcl\lib\d5\debug;C:\Projects\Office\ Common\DCP;C:\Projects\Office\Common\DCU;C:\Components\OfficeComponents;C:\Proje cts\Office\Bin\ClientSide;C:\Components\JVCL+JCL 3_36\jvcl\lib\d5;C:\Components\ZipTV;C:\Components\JVCL+JCL 3_36\jvcl\resources"
-LUVclx50;Vclmid50;Vcljpg50;Vcldb50;vclsmp50;Vcl50;C4QueryBuilder;C4Tee;EQTLD5;dx EdtrD5;VPA4;C4ctrls;JvCoreD5R
Не обращайте внимания на то, что директивы компилятора $D и $O в коммандной строке и в файле конфигурации различны - это не влияет на суть проблемы.
Замененная компонента "живет" в пэкейдже C4Ctrls.bpl.
← →
брат Птибурдукова (2012-11-08 19:53) [25]Не уверен, что можно (точнее, имеет смысл) билдить с рантайм-пакетами, но без пакета rtl (и vcl, раз уж тут vcljpg и прочие фигурируют). Кроме этого криминала не вижу.
Ещё суффиксы 50 смущают, в XE2 пакеты точно идут без суффикса (-LUrtl, хотя сам пакет rtl160.bpl).
← →
harisma © (2012-11-08 20:16) [26]
> Ещё суффиксы 50 смущают
Я ж писал, что среда разработки Дельфи 5 (в 21 то веке :)). Но это без разницы.
← →
Игорь Шевченко © (2012-11-08 20:33) [27]harisma © (08.11.12 19:33) [24]
переименуй файл проекта в dcc32.cfg и положи рядом с файлом dpr проекта, должен получиться такой же набор опций, как при компиляции из IDE
и, соответственно, вызов dcc32 файл-проекта.
← →
harisma © (2012-11-09 11:55) [28]
> переименуй файл проекта в dcc32.cfg
Имеете ввиду файл конфигурации проекта?
И оставить его в папке проекта, или переместить его в папку BIN дельфы?
← →
Игорь Шевченко © (2012-11-09 13:20) [29]
> И оставить его в папке проекта
Да
← →
Cobalt © (2012-11-10 00:22) [30]> DVM © (08.11.12 00:03) [6]
> Все параметры передаваемые компилятору лежат в файле проекта делфи.
Не все. Есть еще параметры среды.
Из среды компилируется нормально, а из консоли - заругается что не находит какой-нить ExcelXP.dcu, тогда-то и поймёшь, что не все коту масленица.
← →
DVM © (2012-11-10 00:30) [31]
> Cobalt © (10.11.12 00:22) [30]
>
> Не все. Есть еще параметры среды.
Возможность такая есть конечно. Но лучше настройки хранить все же в проекте, а не глобально.
> а из консоли - заругается что не находит какой-нить ExcelXP.
> dcu, тогда-то и поймёшь, что не все коту масленица.
>
>
Если версия делфи позволяет используйте MSBUILD и все подобные проблемы уйдут.
← →
harisma © (2012-11-13 12:17) [32]
> используйте MSBUILD
А это чего за зверь такой?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.075 c