I have been following this thread and I guess it is time to chime it
a bit with what I know. First my background. I used Eclipse since '03
for Java development then switched in mid '06 to C++ development with
Eclipse/CDT so I have a fair amount of experience with Eclipse, Ant
and about a year of full time CDT and CMake.
I am just going to rattle off some answers/corrections to the various
items that have been posted in this thread:
Eclipse Plugin Development: Usually you develop a plugin for Eclipse
using their PDE (Plugin Development Environment). This is almost
certainly going to be written in Java with maybe a small JNI module
if you absolutely need to jump across the Java/Native bridge to do
something in the C++ world. Eclipse will manage the build of your
plugin using what ever build mechanism Eclipse uses for Java.
CDT Projects: There are 2 kinds of CDT projects; 'Managed Makefile'
and 'Makefile'. In the 'Managed Makefile' project Eclipse basically
does the project management for you and then creates a Makefile
behind the scenes and then invokes that makefile to build your
project. In a 'Makefile' project you bring your own makefile to the
project. CDT just provides the IDE environment. The major downside to
the 'Managed Makefile' project is that there is really only 1
'Target' in your project, so anything past a basic "hello World" or
"Hello Library" is beyond the capability of CDT (at least how I
understand it), which is why I am guess that most people use the
"Makefile" project so they can have 1 project with lots of
"targets" ( Library, Executable, Testing harness).
Right Tool for the Right Job: As stated in previous messages, CMake
is a great "Generator" of 'project files' ( Makefile, Xcode, VS,
Nmake) for typically C/C++ projects. ( I have no experience with any
other language + CMake). Ant is a just as awesome build system for
Java. Use the right tool for the right job. If I am doing Java Dev,
CMake will NEVER enter the picture. If I am doing C/C++ dev then Ant
will NEVER enter the picture. If CMake generated an Ant xml file for
java projects then you may be onto something.
Cmake File Editing: There is a plugin at http://www.cthing.com/
CMakeEd.asp that adds a nice editor to Eclipse that makes editing
CMake files easier. It offers syntax highlighting, command completion
and integrated documentation. Very nicely done.
Current CMake/Eclipse Integration: http://www.cmake.org/Wiki/
CMake:Eclipse (which I wrote) goes over the current state of affairs
in using CMake with Eclipse. Generally after bootstrapping the
process things are pretty smooth as cmake will make sure your
makefiles are up to date if you change the CMakeLists.txt file. Where
things are NOT smooth is if you are making MAJOR changes to your
CMakeLists.txt files then I find that I need to use an external
"Terminal" program to clean things out and re-invoke ccmake to set my
project up again.
On the Eclipse download page http://www.eclipse.org/downloads/ there
is a specific selection to download just the base eclipse + CDT
without all the extra java IDE stuff. This works rather nicely. If
you need to have some XML editing capability (say for paraview
development) then you can easily download the proper XML editors for
that function.
<opinion>CMake would have an extremely difficult time luring java
developers from Ant or Maven to use Cmake for a build system and vice
versa, Ant would have a difficult time luring c/c++ developers from
cmake. Each party should concentrate on what they do best.</opinion>
Sorry for top posting..
--
Mike Jackson Senior Research Engineer
Innovative Management & Technology Services
On Jul 31, 2007, at 3:05 AM, Eric Noulard wrote:
2007/7/31, Brandon Van Every <[EMAIL PROTECTED]>:
On 7/30/07, Andy Dingfelder <[EMAIL PROTECTED]> wrote:
Building java apps it typically done using Maven or Ant, and I
see no
need to re-invent the wheel and use cmake to do that.
I do. If you want Eclipse developer mindshare, then ultimately you
want CMake to work as a Java build tool as well.
I'm following this interesting thread and here I must say
that I disagree.
CMake I think should never became "A Java build tool"
CMake "may" add java support which may end up
in generating ant build files.
Ant is a build tool which may be compared to make
(ant is much much much nicer and powerful than make though)
CMake (from my point of view) is a build tool GENERATOR.
You may not need any
of that at first, but you aren't going to get a snowball of support
unless CMake is handling basic Java builds. That's the strategic
risk. Strategically, if Ant figures out how to do C/C++,
Ant already does, see cc Task:
http://ant-contrib.sourceforge.net/cc.html
and CMake
doesn't figure out how to do Java, then CMake will lose in the
Eclipse world.
Not so sure, even if I'm no eclipse expert.
If CMake is able to generate Eclipse project files and/or with
eventual Ant build files then I'm pretty sure CMake will get in the
Eclipse
world very soon.
Java IDE is only a part of what Eclipse is for and I'm not sure
it will be the more prominent one in the mid-term.
Major vendors for embedded (generally cross compiled) tools
goes for eclipse "platform" http://www.linuxdevices.com/news/
NS9149933313.html
because eclipse is a "cool" development platform
(<flame type=free> as soon as you have enough RAM </flame>:))
Java devel. is certainly not the main target for them.
Now that CMake cross-compiling support is emerging I think that
CMake is on a very good path to get into Eclipse world as soon
as CMake would be able to generated eclipse CDT project files.
But some approaches are more likely to get accepted by large numbers
of people than others. Bootstrapping CMake is more cool than using
Ant to take care of what CMake is supposed to take care of. Coolness
inspires.
I'm not sure to get your point but I will elaborate a little more on
Ant vs CMake.
I think you underestimate what Ant
and the wealth of optional tasks are able to do, I suggest you go
to http://ant.apache.org/manual/ and browse tasks.
You'll see that high level ant tasks enables you to do ftp, ssh, scp,
cvs, subversion, rpm building in a easy way.
As far as I know CMake does not have those capabilities.
The differences I see between CMake and Ant is the fact
that CMake is a two-level tool (L1 = generate , L2 = build)
with very limited extensibility (MACRO or EXECUTE_PROCESS)
whereas Ant is a single-level tool with extensive extensibility
possibilities,
i.e. anything a Java program can do may be turned into an Ant task.
That said I LOVE CMake very much, because of this 2 level aspect
from my point of view CMake is missing a powerful extensibility
mechanism.
Before going to CMake (from hand-written Makefile and some Ant
build files)
I was interesting in SCons because SCons offers you python and
not a limited scripting language.
I did go to CMake because CMake was better at GENERATING
build files for several build tools including Visual Studio project
files.
My 2 cents on CMake, Ant, Eclipse and the like.
--
Erk
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake