Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как избавиться от DCU в Delphi?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Вопрос по Delphi Xe и выше:
После обновления INDY, после компиляции проекта, в выходном каталоге появляется куча DCU файлов от инди.
Что делал: Есть общий каталог для DCU файлов инди, туда сложил появившиеся DCU  
файлы. Настроил в IDE путь поиска DCU файлов (tools - options - library - debug dcu path).
Но файлы все равно создаются .
 
Как бы сделать так, чтобы делфи использовал для INDY нормальные DCU файлы?

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 17:14 15-12-2011 | Исправлено: SolidSnakeRU, 18:21 15-12-2011
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Project -> Options -> Directories -> UnitOutputDirectory

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 20:30 15-12-2011 | Исправлено: wasilissk, 20:31 15-12-2011
SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дело не в свойствах проекта:
Создал проект в XE, положил idtcpserver, скомпилировал - получил 1 ехе и 1 dcu (именно это и нужно).
 
Открыл этот же проект в Delphi XE2 (с обновленным INDY), скомпилировал и появилось куча dcu от INDY.
 
Вот сравнение.
 
Думаю, надо настроить какой то путь в настройках IDE или как-то по особенному установить обновленный INDY...

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 09:55 16-12-2011 | Исправлено: SolidSnakeRU, 09:59 16-12-2011
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SolidSnakeRU
Тогда очистите это поле.  
Если что-то указано в UnitOutputDirectory, все dcu-хи будут сваливаться в эту директорию. Если нет, будут валиться в директории с pas-файлами.

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 12:06 16-12-2011
SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос не совсем в этом, скорее - почему они стали создаваться сразу после обновления INDY?
По идее, потому что я перекомпилировал INDY и старые DCU стали не подходить.
Ок, я указал в IDE путь поиска tools - options - library - debug dcu path.  
Казалось бы - каталог с DCU файлами INDY указан и они как раз те, что создались при перекомпиляции.

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 13:33 16-12-2011
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SolidSnakeRU
debug dcu path тут совершенно не при чем. Debug dcu используется как первоисточники только в том случае, когда pas-ки недоступны. Когда они доступны, dcu-файлы (неважно с debug info или без) будут заново компилироваться при каждой пересборке.
Возможно изначально у вас просто не было pas файлов, а теперь появились.

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 13:47 16-12-2011
SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В том то и дело, что были. Но в другом месте.
По умолчанию, исходники INDY лежат в "Embarcadero\RAD Studio\х.0\source\Indy10", после обновления INDY, каталог с исходниками изменился, но он есть и там лежат и pas и dcu файлы.

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 15:01 16-12-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wasilissk
Опять вы мутите воду. Каталоги dcu-debug и просто dcu должны быть в разных местах как у среды Delphi после установки.
 
SolidSnakeRU
У Вас некоторая неразбериха-или недопонимание с каталогами. Есть кнопка Clean - удаляет автоматически создаваемые файлы dcu это они. Когда pas Indy и dcu лежат в одной папке, то по технологии это плохо. Надо УДАЛИТЬ все dcu и понять почему они создаются после компиляции. После того как Вы просвежите вопрос об общих настройках Delphi лайбрари для всех проектов и после этого настройках локального проекта можно будет сказать что Вы спец. Я просто удаляю все dcu которые вижу и если это не каталог Delphi\Lib начинаю беспокоится...

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 17:41 16-12-2011
SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
У Вас некоторая неразбериха-или недопонимание с каталогами.

Иначе я бы не создал тему. Работаю в делфи не первый день, обычно не сталкивался с этой особенностью. Создавались только нужные DCU файлы, именно по тем pas что используются непосредственно в проекте - это меня совершенно устраивает.  
 

Цитата:
УДАЛИТЬ все dcu и понять почему они создаются после компиляции.

Если речь идет о примере - где я создал форму с idtcpserver - как раз пытаюсь понять почему они создаются.
Если же речь о dcu файлах, которые создаются при компиляции самого INDY во время установки (bpl) - чего тут странного? Они и должны создаваться.
 
Если есть время и уверенность в том, что этот вопрос имеет четкий ответ - попробуйте удалить INDY из поставки делфи (сперва из IDE, затем все файлы id* относящиеся к indy из каталога Delphi).
И установите новую сборку INDY - уверен, и у вас начнут создаваться dcu файлы от INDY при компиляции любого проекта, где есть хоть 1 компонент INDY.
В принципе, я могу и с этой кучей мусора жить. Или сделать скрипт чтоб они удалялись или общие настройки проекта, чтобы они копились в другом каталоге.
Но вопрос при этом останется - какого черта они создаются в описанной мною ситуации)

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 18:32 16-12-2011
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
Опять вы мутите воду. Каталоги dcu-debug и просто dcu должны быть в разных местах как у среды Delphi после установки.

А вы опять чего-то недопоняли и поспешили с выводами.
SolidSnakeRU

Цитата:
Если есть время и уверенность в том

Я как раз ради интереса проверил. Стоит "родной" инди на 2007 и установленный на 2009. Создание/несоздание dcu-х в текущей папке проекта зависит только от указанной директории UnitOutputDirectory. Собственно как и должно быть. ЧЯДНТ?

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 18:47 16-12-2011
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SolidSnakeRU

Цитата:
И установите новую сборку INDY - уверен, и у вас начнут создаваться dcu файлы от INDY при компиляции любого проекта, где есть хоть 1 компонент INDY.

Нет не создаются.
У меня незыблимый порядок.
 

Цитата:
Если же речь о dcu файлах, которые создаются при компиляции самого INDY во время установки (bpl) - чего тут странного? Они и должны создаваться.  

Тут не сказано куда они создаются. Они опять же плюхаются рядом и Delphi в понимании этого добавляет в пути к DCu файлам пути pas файлов. Прописываются они в опциях Delphi общих. Unit path. Если там пути которые ведут к pas файлам - заранее это кривизна и гемор 100%.
 

Цитата:
Если речь идет о примере - где я создал форму с idtcpserver - как раз пытаюсь понять почему они создаются.  

Пути к pas файлам созданы из за недоправильной установки indy. Если в проекте указано dcu кидать сюда, то те pas файлы которые в общих настройках запачены, с них будет слеплены новые dcu которые лягут туга куда Вы попросили.
 
рецепт:
Зайдите в опции Delphi в опции компилятора-директории и просто всем путям добавьте символ минус. Чтобы ни один каталог Delphi изначально не знала. Потом в опциях проекта  опции компилятора-директории вообще все удалите из обеих сборок Base\Debug\Release. После этого удаляйте все dcu которые можно получить снова кроме родных Delphi. Это немного долго, но после этого наступает желаемый порядок. Добавляете в пути Unit lib только те которые не содержат pas файлов и будет счастье 100%. Если все известные каталоги не содержат pas файлов то получение dcu файлов будет только единожды и под контрольно - аксиома.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:48 16-12-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня была похожая ситуация, только думаю, что случай был уникальным:
 
все pas файлы имели дату какую-то запредельную 2020 и при каждом обращении, естественно, пересоздавались dcu'шки...

Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 15:55 18-12-2011
SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover, спасибо, ваше сообщение помогло сделать именно то, что я хотел.
 
Делаю вывод, уверен, теперь это поможет многим. На примере установки INDY:
  • Удаляем старый релиз INDY из Delphi. Как это делать можно найти в интернете.
  • Создаем отдельный каталог для INDY, скачиваем нужную сборку INDY, кладем папки "Core", "Protocols", "System", в нашу папку.
  • Создаем еще папки "dcu\debug" и "dcu\release", внутри нашей.
  • Заходим в Delphi, в настройках среды, добавляем наши каталоги в пути.
    Каталог "dcu\release" добавляем в "Library path".
    Каталог "dcu\debug" добавляем в "Debug dcu path".
  • В Delphi, открываем все нужные *.dpk от INDY, в нужном порядке.
  • В свойствах каждого проекта (проект создается при открытии dpk), настраиваем путь "Unit output directory", причем для release сборки указываем каталог "dcu\release", для debug соответственно "dcu\debug".
  • "Билдим" наши проекты в release и debug конфигурациях - этим самым получаем нужные dcu файлы.
  • Устанавливаем INDY (на 2х пакетах с шестеренкой надо нажать install).
  • Если есть, удаляем DCU файлы из каталогов "Core", "Protocols", "System".

 
Для других проектов, этого я делать не стал:

Цитата:
Потом в опциях проекта  опции компилятора-директории вообще все удалите из обеих сборок Base\Debug\Release

dcu файлы от моих модулей пусть кладутся рядом)

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 11:34 19-12-2011 | Исправлено: SolidSnakeRU, 10:47 20-12-2011
Dmitry

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
рецепт:
Зайдите в опции Delphi в опции компилятора-директории и просто всем путям добавьте символ минус. Чтобы ни один каталог Delphi изначально не знала. Потом в опциях проекта  опции компилятора-директории вообще все удалите из обеих сборок Base\Debug\Release. После этого удаляйте все dcu которые можно получить снова кроме родных Delphi. Это немного долго, но после этого наступает желаемый порядок. Добавляете в пути Unit lib только те которые не содержат pas файлов и будет счастье 100%. Если все известные каталоги не содержат pas файлов то получение dcu файлов будет только единожды и под контрольно - аксиома.

 
А в чем проблема, если исходники используемых в проекте компонентов будут компилироваться каждый раз вместе с ним? Правильно настроить пути для складывания dcu и все. Зато все будет точно собрано с едиными настройками компиляции и сборки для всего проекта.

Всего записей: 81 | Зарегистр. 24-09-2003 | Отправлено: 00:23 06-09-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как избавиться от DCU в Delphi?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru