[CMake] how to add jar that depends on other built jar?

Matthew Woehlke matthew.woehlke at kitware.com
Wed Mar 13 18:14:52 EDT 2013


On 2013-03-13 17:09, Matthew Woehlke wrote:
> I have a project that builds a bunch of jar's with add_jar from
> UseJava.cmake. Let's say we have myjar1 and myjar2. How do I write the
> build rules for myjar2 such that it depends on myjar1?
>
> It looks like add_jar is intended to accept names of jar's as source
> arguments, but this doesn't work (they are appended to
> CMAKE_JAVA_INCLUDE_PATH which is not pushed back to parent scope and is
> not used after the point where the append happens). Also, there does not
> seem to be *any* way to enforce that myjar1 is built before myjar2.
>
> Do I miss something, or is this not supported?

So... I fixed this locally by hacking on UseJava.cmake. Basically, I did 
three things:

- Also set CMAKE_JAVA_INCLUDE_PATH_FINAL when a jar is seen in add_jar 
arguments.
- Accept targets as a means of specifying jar files.
- Add jars as dependencies of the javac step.

...and I also moved some path logic to after the extension check, as it 
is only used for .java files.

Is there any chance of getting this accepted for 2.8.11?

-- 
Matthew



More information about the CMake mailing list