CPMake Logo

Welcome to the CPMake Home Page.
Home of the Cross Platform Make Utility.

last updated July 19, 2007

What is CPMake?
CPMake is a make utility written in Java to make anything (C, C++, Java, C#, XSL ...)
CPMake works similar to GNU make in that is uses rules and dependencies to build a project.  CPMake uses Java scripting languages (BeanShell, Rhino, Jython and Groovy) for the build files to give increased flexability and the ability to customize the make file to your project.

CPMake Benafits:

For questions and comments please send an email to the source forge mailing list.
CPMake Source forge Project

Or Send me an email and tell me what you think.

Date News
7-19-2007 This project is still alive.
I've been in the midst of trying to get a thesis done and I've been a bit swamped.
There really needs to be a 1.4 release soon as there is a lot of new stuff checked in. Keep checking back.
5-14-2005 1.3.1 is released.
List of some additions besides bug fixes:
  • Added exec methods that take String arrays
  • Added copy rules with message params to print while copying files
  • The debug option prints creates a file dependency.txt that shows all target dependencies
  • Changed the exec method to split strings internaly instead of using the Java routine. With this change quoted strings will be parsed as one parameter. (see splitString method)
  • Added grep method on CPMake class.
3-17-2005 1.3 is released.  I know what happend to 1.2?  I'm changing the releases to be more frequent.  Most of the changes are not bug fixes but enhancements so you are likely to see version 1.3.1 etc very soon.
A Heap of new stuff is in this release.  Here is a short list:
  • Faster build times.  I profiled CPMake and cut some fat.
  • Added a copy rule
  • Add Rhino to the supported scripting languages
  • Added environment variable to change the cache dir
1-28-2005 1.2 beta 2 is released.
This beta contains a ton of stuff I added while creating a build script for another project. The most notable changes are
  • Allows both explicit and pattern rules for the same target
  • Added a combine method to combine string arrays
  • Allows multiple pattern rules for the same target. CPMake picks the one where the prerequisite exists.
  • Added a method to change the class path at runtime
  • Ability to exclude files in the createFileList api
  • Added copy rules
1-9-2005 1.2 beta 1 is released.
1.2 contains the dependency checking code for C/C++ and Java projects.
Also if the cpmake.jar file is in the class path you can run cpmake now by just calling "java make".
1-6-2005 Ok the faults with the +M option in Jikes are to big to ignore. Lets take the classic example: Class A uses class B that uses class C. If A is updated no one cares but A. If B is updated both A and B should be rebuilt. Now what should happen if C is updated? The answer is that B and C should be rebuilt. Unfortunately the +M option seems to think that A, B and C should all be rebuilt.
So I dug up a spec on the class file format and wrote a parser for it and shazam! CPMake now does a very good job of dependency tracking for Java files. Best part is that it does it without you having to do anything special to the make file and with any compiler. If you want to play with this feature check out the code from CVS.
1-5-2005 Now I've done it. In my quest to add dependency checking for java files I came to the conclusion that the only way to know what a java file includes is to either write a java parser <yuck> or analize the class files after they have been built. But then I started playing around with Jikes and I have struck gold. Jikes has a +M option that generates make dependency files for the compiled class files. CPMake has a method for parsing these types of files. I put the two together in a build file and I hit pay dirt. It works awesome, except the +M option has a few bugs in it that I had to work around inside of CPMake. Guess I'll have to turn my attention to the Jikes project next and fix it up.
So to make a long story short with CPMake you can compile java code with good dependency tracking. I will shortly post a tutorial on writing a java build file and I will include how to use Jikes with the +M option.
1-4-2005 I'm currently having trouble getting the groovy build script examples to work. I have posted a message to the groovy people but with no reply. Currently CPMake is unable to call into the script to perform biuld rules.
1-3-2005 CPMake now does dependency checking. At least it works for C/C++ code. I want to add a dependency checker for Java before I check this in. The dependency checking will be made available in a 1.2 release of CPMake.
12-31-2004 Added auto clean to the 1.2 code. This is realy cool. CPMake can clean up a project based on the rules for the targets. More information in the documentation section.
12-29-2004 Documentation is finally completed
12-28-2004 Added a new make file to samples area.
12-22-2004 Added support for Jython and Groovy script.