Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Компилятор в Делфи   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.091 c
15-1346445002
Юрий
2012-09-01 00:30
2013.03.22
С днем рождения ! 1 сентября 2012 суббота


2-1334063803
AndreyPl
2012-04-10 17:16
2013.03.22
комбинация клавиш для установки TabOrder


15-1352731709
Kerk
2012-11-12 18:48
2013.03.22
Всякие полезные услуги в социальных сетях


4-1258127067
harisma
2009-11-13 18:44
2013.03.22
Major/Minor OS Version


15-1333286141
Новичок
2012-04-01 17:15
2013.03.22
Какой пакер лучше?