views:

541

answers:

4

Guys,

Has anyone ever managed to compile there Delphi 6 & 7 (NOT any Delphi > 7 ) project using the command line?

All the instructions i see are not very clear on what exactly need to go where!

Am looking for step by step kind of instructions.

Answers should be limited to Delphi 6 & 7, i understand Delphi2006 and > uses MSBuild which is far much easier.

Links are also high appreciated.

Gath

+2  A: 

FinalBuilder makes it very easy. Give it a try.

François
+6  A: 

This is not difficult to do. I have a standard Delphi 5 install on my machine here, and when I open a command prompt, navigate to the $(DELPHI)\Demos\Threads directory and enter dcc32.exe thrddemo.dpr the application is built on the command line.

For your own project you may need to add some switches to include file directories, output directories, defines or similar things. Running dcc32.exe without parameters gives a list of switches and parameters. It is all described in the documentation, as well.

For repeatability you should create a batch file or a regular Makefile.

Note that both the project cfg file and the common dcc32.cfg in the Delphi directory contain important settings. For some information about how they affect the build see for example this link on Delphi Wikia.

mghie
+3  A: 

For build automation, I use Apache Ant, which is a software tool for automating software build processes. I use it for all my projects, from Delphi 6 to Delphi 2009, and Free Pascal.

Things it can do "out of the box" include MD5 checksum generation, ZIP file creation, text search/replace (useful for copyright header generation), execution of SQL statements, XSLT processing.

For example, to compile all projects with Delphi 6, this is (a part of) the script:

<!-- ============================================================== -->
<!-- Compile with Delphi 6                                          -->
<!-- ============================================================== -->
    <target name="compile_d6" depends="clean">
     <apply executable="${d6}\Bin\dcc32" failonerror="true"
       output="build-d6.log" >

       <arg value="-B"/>
       <arg value="-Q"/>

       <arg value="-I${source};${indy10}/Lib/System"/>
       <arg value="-O${source};${indy10}/D6;${jcl}/d6"/>
       <arg value="-U${source};${indy10}/D6;${jcl}/d6"/>  

       <fileset dir=".">
       <patternset>
        <include name="*.dpr"/>
       </patternset>
      </fileset>
     </apply>
    </target>
mjustin
looks nice...please give more explanation
gath
My answer includes two links to the project home page and the Wikipedia article. Do you have a specific question?
mjustin
Yes, this is a good way to go. I've done something similar with NAnt, which is a .NET port of Ant.
Conor Boyd
+1  A: 

I would suggest combination of NAnt and dcc32, but there's also Juancarlo Añez's "WAnt - A Pascal-Friendly Build Tool". I've been using modified version of the 1.x instead of the 2.x alpha. Since it's open source, I could extend the code to output log in XML with the same format as NAnt, so I can integrate it with CruiseControl.NET.

eed3si9n
I'm using CruiseControl.NET with NAnt. What's the problem with NAnt so you would use WAnt instead?
mghie
When I first started using WAnt, the out of the box support for building Delphi project and running DUnit test seemed more attractive to me. Like I said, I'd try NAnt if I were to start from scratch.
eed3si9n
gath
@gath: There would not be any problem to use this environment for Delphi 2, even.
mghie
Conor Boyd