Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.069 c
15-1345453443
Дмитрий С
2012-08-20 13:04
2013.03.22
Мастер-класс по микроконтроллерам.


2-1339949716
Cobalt
2012-06-17 20:15
2013.03.22
Вывод текста


2-1332313764
Erwik1900
2012-03-21 11:09
2013.03.22
Объединение SQL запросов


1-1298972588
rxQ
2011-03-01 12:43
2013.03.22
Положение объекта в rxRichEdit


2-1346412530
теркин
2012-08-31 15:28
2013.03.22
Чтение запись TObjectList в файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский