Peter
Nordlund wrote:
It is focuesed on compiling Java, but maybe it
could also be used
for C++, if you could live with the burden of having a
Java-environment
up and running.
I
agree that it is a burden. I'm not a big fan of Java and I would prefer
not to pollute my pure Windoze or Linux environment with JAVA. That said,
people are going to have to install something to make this work
I joined the Ant-mailing list quite a few months
ago.
I remember someone asking if Ant
was suitable for C++, but I don't
remember the answer.
I
poked around a bit and couldn't find anything about using Ant for C++.
Maybe you could post to the group and see if anyone had done
this?
After
looking at the documentation I assume we would have to write a few "tasks" to do
things like build an object file from a source file, build a library, and build
an executable. These would have to have parameters for all of the various
options like the name of the compiler (or other tool), path, various flags,
etc. And then these parameters are configured in an XML file? So if
someone wanted to build Boost on Windows with the Borland compiler, he/she would
edit the XML and viola!?
I see
two advantages of Ant: portability and CVS support. The CVS support
goes one level above the IMAKE suggestion because it is able to initialize the
build tree from a repository and then build it all in one environment. Of
course, I'm not sure how you version manage the XML configuration files in this
scheme. Anyway, to do the same thing with IMAKE you typically write a
script to check out the build tree (good luck making this portable) ,
generate the Makefiles using an IMAKE bootstrap program (if you use Imboot you
need Perl).
I think we need to start formalizing some goals for
this little activity. Here is what I can think of at the moment (in no
particular order):
1) The
solution needs to be highly portable to all development platforms (we could
discuss what this means, but for sure it means: Linux/Unix variants and
Win32).
2) The
solution needs to neatly factor out into some sort of configuration all the
build variations due to both platforms and compilers.
3) The
solution should be really easy to use. For example, pick a configuration
file with my platform and compiler, enter a single command, and it builds
itself.
4) The
solution should require a minimum of effort to learn and maintain. That
is, it should be easy to add new files and libraries.
5) It
would be nice if the solution could integrate with CVS to checkout a particular
version and build it.
6) The
solution should minimize the required additional tool and language
installations. Of course, some platforms may be easier than
others.
7) If
acquired from elsewhere, the tool(s) should be demonstrably stable and well
documented.
Any
thoughts?
Jeff