Как мне скомпилировать мой проект delphi в командной строке? - PullRequest
14 голосов
/ 03 декабря 2009

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

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

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

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

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

Гаф

Ответы [ 6 ]

15 голосов
/ 03 декабря 2009

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

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

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

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

8 голосов
/ 03 декабря 2009

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

Возможности «из коробки»: генерация контрольной суммы MD5, создание ZIP-файла, поиск / замена текста (полезно для генерации заголовка авторского права), выполнение операторов SQL, обработка XSLT.

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

<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 (Continous Integration) с открытым исходным кодом, такие как Hudson / Jenkins, поддерживают готовые сценарии сборки Apache Ant, что означает, что вы можете сделать так, чтобы они собирали проект автоматически при каждом изменении в исходном хранилище. *

5 голосов
/ 29 июля 2011

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

"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 голосов
/ 03 декабря 2009

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

1 голос
/ 03 декабря 2009

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

0 голосов
/ 17 октября 2011

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

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

...