[CMake] Path problem when building a jar file

Robert Haines rhaines at manchester.ac.uk
Tue Oct 28 14:07:36 EDT 2008


Hi all,

I am building a jar file but I can't get the paths right within it.

I have a directory structure like this
source-root/org/some/package/<files>.java
source-root/org/some/other/<files>.java
and I want the compiled .class files to all go into the same jar file.

If I have a CMakeLists.txt in source-root simply do a
add_library(JarName ${FILES})
(where FILES is a list of all the java files relative to source-root)  
my jar file is full of paths like this:

org/some/package/org/some/package/<files>.java
org/some/other/org/some/other/<files>.java

ie, because CMake builds everything in a directory relative to source- 
root in the binary tree and then javac puts the files in their package  
directories using this as a starting point, the package structure gets  
duplicated.

It seems as though CMake is being over zealous in its use of the -d  
flag to javac. Either that or at the "link" step the wrong directory  
is being passed to jar via the -C flag. I have tried to override the - 
d and -C flags with a combination of set_source_files_properties and  
set_target_properties with no joy.

Another way I have tried is to have a CMakeLists.txt in the source- 
root/org/some/package/ directory. If I do this I can get the paths  
right for that particular branch of the package scheme but can't get  
the classes in the org/some/other/ branch into the same jar file.

Has anyone managed to do this with CMake? It seems to be an  
overwhelmingly simple thing to do so I must be doing it wrong!

Thanks,
Rob



More information about the CMake mailing list