2009-12-03 2 views
13

Qualcuno è mai riuscito a compilare lì Delphi 6 & 7 (NON alcun progetto Delphi> 7) utilizzando la riga di comando?Come si compila il mio progetto delphi sulla riga di comando?

Tutte le istruzioni che vedo non sono molto chiare su cosa esattamente bisogno di andare dove!

Sto cercando il tipo di istruzioni passo passo.

Le risposte devono essere limitate a Delphi 6 & 7, ho capito Delphi2006 e> utilizza MSBuild che è molto più semplice.

Anche i collegamenti sono molto apprezzati.

Gat

risposta

14

Questo non è difficile da fare. Ho installato Delphi 5 standard sulla mia macchina qui, e quando apro un prompt dei comandi, vai alla directory $(DELPHI)\Demos\Threads e inserisci dcc32.exe thrddemo.dpr l'applicazione è costruita sulla riga di comando.

Per il tuo progetto potrebbe essere necessario aggiungere alcuni switch per includere directory di file, directory di output, definizioni o cose simili. L'esecuzione di dcc32.exe senza parametri fornisce un elenco di parametri e interruttori. È tutto descritto nella documentazione, pure.

Per la ripetibilità è necessario creare un file batch o un normale Makefile.

Si noti che sia il file di progetto cfg che il comune dcc32.cfg nella directory Delphi contengono impostazioni importanti. Per alcune informazioni su come influiscono sulla build, vedi ad esempio this link on Delphi Wikia.

+3

Parlando il wiki di Delphi: c'è anche una pagina su esattamente questo argomento: http://delphi.wikia.com/wiki/Compile_from_Commandline che ho appena esteso. – dummzeuch

7

Per l'automazione di build, utilizzo Apache Ant, ovvero a software tool for automating software build processes. Lo uso per tutti i miei progetti, da Delphi 6 a Delphi 2009 e Free Pascal.

Le cose che possono fare "out of the box" includono la generazione di checksum MD5, la creazione di file ZIP, la ricerca/sostituzione di testo (utile per la generazione di intestazioni di copyright), l'esecuzione di istruzioni SQL, l'elaborazione XSLT.

Ad esempio, per compilare tutti i progetti con Delphi 6, questa è (una parte di) dello 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> 

libero open source CI (Continuous Integration) server come Hudson/Jenkins supportano Apache Ant costruire script fuori dalla scatola, il che significa che puoi farli compilare automaticamente il progetto ogni volta che hai fatto il check in di una modifica nel repository sorgente.

+1

sembra bello ... per favore dare più spiegazioni – gath

+0

La mia risposta include due link alla home page del progetto e l'articolo di Wikipedia. Hai una domanda specifica? – mjn

+1

Sì, questo è un buon modo per andare. Ho fatto qualcosa di simile con NAnt, che è una porta .NET di Ant. –

1

Vorrei suggerire la combinazione di NAnt e dcc32, ma c'è anche "WAnt - A Pascal-Friendly Build Tool" di Juancarlo Añez. Ho utilizzato la versione modificata di 1.x anziché 2.x alpha. Poiché è open source, potrei estendere il codice al log di output in XML con lo stesso formato di NAnt, quindi posso integrarlo con CruiseControl.NET.

+0

Sto utilizzando CruiseControl.NET con NAnt. Qual è il problema con NAnt, quindi dovresti usare WAnt? – mghie

+0

Quando ho iniziato a utilizzare WAnt, il supporto immediato per la creazione del progetto Delphi e l'esecuzione del test DUnit mi sembravano più interessanti. Come ho detto, proverei NAnt se dovessi iniziare da zero. –

+0

Speriamo di rimanere fedeli a Delphi 6 & 7 ... – gath

3

Si può costruire tutto utilizzando questa riga di comando:

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

mettere questa riga in un file .bat quindi non c'è bisogno di digitare sempre.Date un'occhiata alle opzioni della riga di comando che gestisce questo:

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

BTW: -Q è tranquillo di compilazione e -B ricostruirà tutto. Se si desidera una compilazione più rapida, non utilizzare -B.

Utilizzerà tutte le opzioni nel file-project.cfg. Ho trovato questo dof2cfg executable molto utile. Con esso posso modificare il file di testo .dof e propagare la modifica alla riga di comando e IDE. Non c'è bisogno di aprire il per ogni progetto.

Avviso importante: Il compilatore di riga di comando Delphi 7 presenta un bug molto strano. Se il tuo percorso è molto lungo, fallirà con un errore imperscrutabile: una violazione di accesso senza alcuna informazione significativa. Se fallisce senza alcun motivo ragionevole, prova a ridurre il percorso completo e la dimensione del nome del file.

+1

Ho appena scritto e caricato bdsproj2cfg su CodeCentral che fa lo stesso per i file .bdsproj usati da Delphi 2005 e 2006. Nel caso qualcuno ne abbia bisogno ... – dummzeuch

0

Per le versioni successive di Delphi, questo dovrebbe essere cambiato in:

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