I finally took a quick look at Apache Ant today to see what all the fuss is about. Apparently with some additional components you can actually get Ant to build C/C++ code.
However, compare this build.xml
for Ant:
<?xml version="1.0"?> <project name="Hello" default="hello" basedir="."> <taskdef resource="cpptasks.tasks"/> <taskdef resource="cpptasks.types"/> <target name="hello"> <cc name="gcc" outfile="hello"> <fileset dir="." includes="hello.c"/> <compilerarg value="-O2"/> </cc> </target> </project>
with this Makefile
for gmake:
hello: hello.c gcc -O2 $< -o $@
I think I’ll stick with gmake for now.
It cracks me up that people expect me to hand-write XML.
Screw that. XML is for computers, NOT people.
Ant is best used for Java applications. I find make to be ugly and a pain for Java. Ant has some nifty stuff for creating web applications in Java.
I tried the cpp tasks for Ant for doing C++ builds and it *is* ugly and didn’t work. For that I think that gmake or bjam/jam is best.
If your project were predominantly in Java but needed a bit of C code thru the Java Native Interface (which would require compiling of C programs) then you would probably prefer the ant task over a makefile.
I completely agree on this. However I look at Ant not as competition to MAKE, but as competition to GNU Autotools where it shines. I also agree with note about XML. People tend to put XML into absurd things. Per example using XML for any kind of database is IMHO absurd…