[CMake] Adding support for new languages to CMake

Eric (Brad) Lemings brad at rebit.com
Fri Oct 17 19:00:45 EDT 2008


Alan W. Irwin wrote:
> On 2008-10-16 18:08-0600 Eric (Brad) Lemings wrote:
>
>>
>> Where can I find info/tutorials on adding support for new languages to
>> CMake?
>
> The following is pretty minimal, but I think this is all there is at the
> moment.
>
> Look at Modules/CMakeAddNewLanguage.txt in the CMake source tree. Pick a
> language you are familiar with and uses its support files in Modules and
> Modules/Platform as a template for your own work. You may also want to
> look
> at the CMake source code to confirm how CMake interacts with those
> various
> language support files.  Ask for help on this mailing list when you run
> into some difficulty.
Delphi, as I've just discovered, is quite different from the familiar
C/C++ compile/link phases assumed by CMake.  For example, different
types of Delphi source files produce different types of output files as
shown below:

C:\Temp>dir /s
C:\Temp>dir /b
a.pas
b.pas
c.pas
d.dpr

C:\Temp>type a.pas
package A;
end.
C:\Temp>type b.pas
library B;
begin
end.
C:\Temp>type c.pas
unit C;
interface
implementation
end.
C:\Temp>type d.dpr
program D;
begin
end.
C:\Temp>dcc32 a.pas b.pas c.pas d.dpr
CodeGear Delphi for Win32 compiler version 18.5
Copyright (c) 1983,2007 CodeGear
a.pas(2)
b.pas(3)
c.pas(4)
d.dpr(3)
16 lines, 0.14 seconds, 10980 bytes code, 12152 bytes data.

C:\Temp>dir /b
a.bpl
A.dcp
a.dcu
a.pas
b.dll
b.pas
c.dcu
c.exe
c.pas
d.dpr
d.exe

In particular, I know of no way to translate a Delphi program into an
intermediate form before linking the executable.  (I'll readily admit to
knowing very little about Delphi though.)  So I'm not sure how to make
CMake aware of this.

Tackling the problem from a different angle, Delphi's native build
system is based on MSBuild.  Is there a CMake generator for MSBuild?  If
there is, Delphi/CMake developers could leverage the existing
project/build files.

Thanks,
Eric.


More information about the CMake mailing list