Я и мой ёбаный кот на фоне ковра. Войти !bnw Сегодня Клубы
Чем больше имею дело с Delphi, тем лучше вспоминаю, что мне так нравилось в Аде. Хит сезона: в Delphi файл считается принадлежащим проекту (отображается в IDE), если в dpr написано uses ... in '....pas'. IDE при этом отсчитывает путь от файла проекта, но если компилировать с командной строки, то модуль ищется относительно текущей директории, причём, search path игнорируется напрочь. Забавно, компилятор устраивает наличие .dcu в search path, но .pas ищется только относительно текущей директории. Этот GUI-CLI псевдодуализм всплывает не по отдельности, а в комплекте с ещё одним: группа проектов, созданная в IDE, по синтаксису является makefile, и, действительно, можно запустить make -B -f MyProjectGroup.bpg, и группа проектов скомпилируется, но только до тех пор, пока все проекты в той же директории, что и группа проектов. Ах, да, чуть не забыл, есть же ещё такая штука как .res файлы, которая генерится и компилируется IDE неявно и автоматически. Казалось бы, проблему можно решить, создав в явном виде .rc файлы. Проект Delphi может содержать не только .pas файлы, но и .rc файлы (.pas и .rc — это всё, что может быть в .dpr). IDE отображает .rc файлы как относящиеся к проекту, если они подключаются {$R '....res' in '....rc'}, и собирает их автоматически. Однако, dcc32 так не умеет. Совсем. На этот раз ему нужен только .res, и как–то по–простому впилить компиляцию ресурса, чтоб работало и из make, и из IDE, если открыть группу проектов, уже не получается. Заколебал этот псевдодуализм, когда IDE и консольные утилиты работают с одними и теми же форматами, но очень по–разному. Ах, да, не забыть .dof для IDE и .cfg для компилятора с этим их синхронным редактированием. А как в Аде? Есть GNAT Project с расширением .grp. GPS (GNAT Programming Studio), gnatmake и gprmake все работают с одним и тем же форматом, и ведут себя одинаково. Компилятор знает, какие модули в проекте. IDE тоже это знает, и информация поступает из одного места по одному и тому же алгоритму. А ещё вместо того, чтобы в настройках проекта пихать в search path для модулей и объектных файлов конкатенацию путей до всех зависимостей, можно из одного проекта подключить другой проект. Добавление зависимости, удаление зависимости — всё произойдёт в одном месте, и и компилятор, и IDE поймут это одинаково. В Delphi что–то похожее есть только для runtime packages.
Рекомендовали: @crystalradio
#R0SGWW / @octagram / 4542 дня назад

ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.