<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>RE: [CMake] improve the CMake language?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Tcl is a nice language for implementing declarative commands.&nbsp; It can be easily built on about every platform out there, and the language rules are well known.&nbsp; It is small, and very easy to compile a standalone Tcl based interpreter with the CMake commands built in.&nbsp; The user would not need to have any language installed, you could package the source with CMake or make it part of the cmake binary you distribute.&nbsp; It is freely distributable and has a BSD license.<BR>
<BR>
add_library(foo SHARED foo.cxx)<BR>
<BR>
could become<BR>
add_library {foo SHARED foo.cxx}<BR>
<BR>
or even<BR>
add_library -name foo -type SHARED foo.cxx<BR>
<BR>
Please see:<BR>
<A HREF="http://en.wikipedia.org/wiki/Tcl">http://en.wikipedia.org/wiki/Tcl</A><BR>
<BR>
for a description of this language.&nbsp; It would be very easy to implement a macro as a procedure.<BR>
<BR>
<BR>
I would be happy to participate in any effort to port the cmake commands to a Tcl interpreter.&nbsp; Please let me know if you are interested.<BR>
<BR>
Regards,<BR>
<BR>
Juan<BR>
<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: cmake-bounces+juan.sanchez=amd.com@cmake.org on behalf of Bill Hoffman<BR>
Sent: Thu 11/1/2007 8:03 PM<BR>
To: Brandon Van Every<BR>
Cc: cmake@cmake.org<BR>
Subject: Re: [CMake] improve the CMake language?<BR>
<BR>
Brandon Van Every wrote:<BR>
<BR>
&gt; My concern is that if the status quo is maintained, CMake script will<BR>
&gt; always be ugly to program with.&nbsp; This will put it at a disadvantage<BR>
&gt; compared to build systems written in Python, Ruby, or Perl.&nbsp; I'm not<BR>
&gt; just talking about SCons and so forth.&nbsp; I'm talking about a shop<BR>
&gt; deciding, hey, screw this off-the-shelf stuff, we'll write our own<BR>
&gt; custom build system in our favorite scripting language.&nbsp; It happens in<BR>
&gt; the game industry all the time.<BR>
&gt;<BR>
&gt; Your thoughts?<BR>
&gt;<BR>
&gt;<BR>
<BR>
CMake is a build system.&nbsp; In an ideal world, the language would be<BR>
purely declarative.&nbsp; Basically, you would describe things you want to<BR>
build, and CMake would build them.&nbsp; In practice, this is too<BR>
restrictive, and a small amount of programming makes things easier. I<BR>
never wanted CMake to replace perl, ruby, python or any other language.<BR>
I wanted CMake to not depend on another language being installed.&nbsp; CMake<BR>
only depends on a C++ compiler being around, so CMake can be built.<BR>
Since CMake was developed for ITK (a c++ toolkit), I was adding no<BR>
additional restrictions to the build process. The scripting stuff<BR>
actually came out of a desire to automate the testing system without the<BR>
use of tcl as was required in earlier version of Dart. I am sure the<BR>
CMake language will be tweaked here and there, but if you have a big<BR>
programming job that has nothing to do with building software, then<BR>
CMake is the wrong choice.<BR>
<BR>
So, I think that if something is hard to build because of the CMake<BR>
language, then we should fix it.&nbsp; People should use CMake because it is<BR>
really easy to build complex things with, and not because it has a great<BR>
language. The hard stuff should be done in C++ commands.<BR>
<BR>
For example, this small line of CMake code:<BR>
<BR>
add_library(foo SHARED foo.cxx)<BR>
<BR>
does some very complicated stuff as it builds shared libraries on many<BR>
platforms, and different IDE's.&nbsp; And most of that is not done with the<BR>
CMake language, it is done with the more powerful C++ language.&nbsp; BTW, I<BR>
hope this does not become a long discussion, but I am sure it will...<BR>
<BR>
<BR>
-Bill<BR>
<BR>
_______________________________________________<BR>
CMake mailing list<BR>
CMake@cmake.org<BR>
<A HREF="http://www.cmake.org/mailman/listinfo/cmake">http://www.cmake.org/mailman/listinfo/cmake</A><BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>