Как мне скомпилировать мой проект Delphi из командной строки?

Кому-нибудь когда-нибудь удавалось скомпилировать свои проекты Delphi 6 & 7 (НЕ Delphi> 7) с помощью командной строки?

Все инструкции, которые я вижу, не очень ясно, что именно нужно идти куда!

Ищу пошаговые инструкции.

Ответы должны быть ограничены Delphi 6 и 7: я понимаю Delphi 2006 и> использую MSBuild, что намного проще.

Ссылки также высоко ценятся.

Гаф

Ответы

Ответ 1

Это не сложно. У меня есть стандартная установка Delphi 5 на моей машине, и когда я открываю командную строку, перейдите в каталог $(DELPHI)\Demos\Threads и введите dcc32.exe thrddemo.dpr, приложение построено на командной строке.

Для вашего собственного проекта вам может потребоваться добавить некоторые переключатели для включения файловых каталогов, выходных каталогов, определений или подобных вещей. Запуск dcc32.exe без параметров дает список переключателей и параметров. Все это описано в документации.

Для повторяемости вы должны создать командный файл или обычный Makefile.

Обратите внимание, что как файл проекта cfg, так и общий dcc32.cfg в каталоге Delphi содержат важные настройки. Для получения некоторой информации о том, как они влияют на сборку, см., Например, эту ссылку в Delphi Wikia.

Ответ 2

Для автоматизации сборки я использую Apache Ant, который программный инструмент для автоматизации процессов сборки программного обеспечения. Я использую его для всех моих проектов, от Delphi 6 до Delphi 2009 и Free Pascal.

Вещи, которые он может сделать "из коробки", включают создание контрольной суммы MD5, создание ZIP файла, поиск/замену текста (полезно для генерации заголовков авторских прав), выполнение операторов SQL, обработка XSLT.

Например, чтобы скомпилировать все проекты с Delphi 6, это (часть) script:

<target name="compile_d6">
  <!-- Compile with Delphi 6 -->
  <apply executable="${d6}\Bin\dcc32" failonerror="true" output="build-d6.log" >
    <!-- rebuild quiet -->
    <arg value="-B"/>
    <arg value="-Q"/>
    <!-- file paths -->
    <arg value="-I${source};${indy10}/Lib/System"/>
    <arg value="-O${source};${indy10}/D6;${jcl}/d6"/>
    <arg value="-U${source};${indy10}/D6;${jcl}/d6"/>  
    <!-- all *.dpr files in current directory -->
    <fileset dir=".">
      <patternset><include name="*.dpr"/></patternset>
    </fileset>
  </apply>
</target>

Бесплатные серверы с открытым исходным кодом CI (Continuous Integration), такие как Hudson/Jenkins, поддерживают Apache Ant, строят сценарии из коробки, а это значит, что вы можете создать их автоматически при каждом изменении в исходном репозитории.

Ответ 3

Вы можете построить все, используя эту командную строку:

"C:\Program Files\Borland\Delphi7\Bin\DCC32.exe" -Q -B your-project.dpr

Поместите эту строку в файл .bat, чтобы вам не приходилось вводить ее всегда. Посмотрите на параметры командной строки, запускающие это:

"C:\Program Files\Borland\Delphi7\Bin\DCC32.exe" -h

Кстати: -Q тихая компиляция и -B перестроит все. Если вы хотите более быструю компиляцию, не используйте -B.

Он будет использовать все параметры в файле your-project.cfg. Я нашел этот исполняемый файл dof2cfg очень полезным. С его помощью я могу отредактировать текстовый файл .dof и распространить изменения в командной строке и IDE. Нет необходимости редактировать его для каждого проекта.

Важное предупреждение для длинных путей: у компилятора командной строки Delphi 7 есть очень странная ошибка. Если ваш путь очень длинный, он потерпит неудачу с непостижимой ошибкой: нарушение доступа без какой-либо значимой информации. Если произойдет сбой без каких-либо разумных причин, попробуйте уменьшить максимальный размер пути и размер файла. Положите проект в корневую папку, обычно решайте его.

Ответ 4

FinalBuilder делает это очень легко. Попробуйте.

Ответ 5

Я бы предложил комбинацию NAnt и dcc32, но там также Juancarlo Añez WAnt - Паскаль-дружественный инструмент сборки. Я использовал модифицированную версию 1.x вместо 2.x alpha. Поскольку он с открытым исходным кодом, я мог бы расширить код для вывода журнала в формате XML в том же формате, что и NAnt, поэтому я могу интегрировать его с CruiseControl.NET.

Ответ 6

Для более поздних версий Delphi это должно быть изменено на:

"C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin\DCC32.exe" -h