View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0001123 | CMake | CMake | public | 2004-08-31 16:05 | 2016-06-10 14:30 | ||||
Reporter | Douglas Gregor | ||||||||
Assigned To | Bill Hoffman | ||||||||
Priority | low | Severity | major | Reproducibility | always | ||||
Status | closed | Resolution | moved | ||||||
Platform | OS | OS Version | |||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0001123: ADD_JAVA_LIBRARY does not support multiple .java files or package hierarchies | ||||||||
Description | Attempting to use ADD_JAVA_LIBRARY with multiple .java files and with .java files stored in subdirectories does not produce the desired results, e.g., ADD_JAVA_LIBRARY(bgl edu/iu/osl/bgl/Graph.java edu/iu/osl/bgl/GraphMLPersister.java) Ideally, this would compile both .java files and place all of the class files into bgl.jar, retaining the directory structure (e.g., Graph.class is in subdirectory edu/iu/osl/bgl). The result with CMake 2.0.3 is that only the first .java file is compiled but the Jar file ends up emplty. The following patch (against CMake 2.0.3) solves both problems, and has been tested on Windows XP and MacOS X Panther (10.3). --- /u/dgregor/Desktop/cmake-2.0.3/Modules/CMakeJavaCompiler.cmake.in Thu Dec 26 19:59:21 2002 +++ /u/dgregor/CMakeJavaCompiler.cmake.in Mon Aug 30 15:06:05 2004 @@ -30,31 +30,40 @@ ADD_CUSTOM_TARGET(${LIBRARYNAME}_target ALL) SET(CMAKE_JAVA_ALL_CLASS_FILES "") - FOREACH(SOURCE ${SOURCES}) - GET_FILENAME_COMPONENT(CLASS_FILE ${SOURCE} NAME_WE) - ADD_CUSTOM_COMMAND(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE} - COMMAND ${CMAKE_JAVA_COMPILER} - ARGS ${CMAKE_JAVA_COMPILE_FLAGS} - -classpath ${CMAKE_JAVA_INCLUDE_PATH_TOTAL} - ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE} - -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/ - TARGET ${LIBRARYNAME}_target - OUTPUTS ${CLASS_FILE}.class - COMMENT "Java File" ) - SET(CMAKE_JAVA_ALL_CLASS_FILES ${CMAKE_JAVA_ALL_CLASS_FILES} ${CLASS_FILE}.class) + SET(CMAKE_JAVA_ALL_CLASS_FILE_PATHS "") + SET(SKIP 1) + FOREACH(SOURCE ${ARGV}) + IF(SKIP) + SET(SKIP 0) + ELSE(SKIP) + GET_FILENAME_COMPONENT(CLASS_FILE_PATH ${SOURCE} PATH) + GET_FILENAME_COMPONENT(CLASS_FILE_NAME ${SOURCE} NAME_WE) + SET(CLASS_FILE "${CLASS_FILE_PATH}/${CLASS_FILE_NAME}") + ADD_CUSTOM_COMMAND(SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE} + COMMAND ${CMAKE_JAVA_COMPILER} + ARGS ${CMAKE_JAVA_COMPILE_FLAGS} + -classpath ${CMAKE_JAVA_INCLUDE_PATH_TOTAL} + ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE} + -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/ + TARGET ${LIBRARYNAME}_target + OUTPUTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${CLASS_FILE}.class" + COMMENT "Java File" ) + SET(CMAKE_JAVA_ALL_CLASS_FILES ${CMAKE_JAVA_ALL_CLASS_FILES} ${CLASS_FILE}.class) + SET(CMAKE_JAVA_ALL_CLASS_FILE_PATHS ${CMAKE_JAVA_ALL_CLASS_FILE_PATHS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${CLASS_FILE}.class) + ENDIF(SKIP) ENDFOREACH(SOURCE) IF(LIBRARY_OUTPUT_PATH) SET(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH}) ELSE(LIBRARY_OUTPUT_PATH) SET(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}) ENDIF(LIBRARY_OUTPUT_PATH) - ADD_CUSTOM_COMMAND(SOURCE ${CMAKE_JAVA_ALL_CLASS_FILES} + ADD_CUSTOM_COMMAND(SOURCE ${CMAKE_JAVA_ALL_CLASS_FILE_PATHS} COMMAND ${CMAKE_COMMAND} ARGS -E chdir ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_JAVA_ARCHIVE} - -cvf ${CMAKE_JAVA_LIBRARY_OUTPUT_PATH}/${LIBRARYNAME}.jar *.class + ${CMAKE_JAVA_ARCHIVE} + -cvf ${CMAKE_JAVA_LIBRARY_OUTPUT_PATH}/${LIBRARYNAME}.jar ${CMAKE_JAVA_ALL_CLASS_FILES} TARGET ${LIBRARYNAME}_target - DEPENDS ${CMAKE_JAVA_ALL_CLASS_FILES} + DEPENDS ${CMAKE_JAVA_ALL_CLASS_FILE_PATHS} OUTPUTS ${CMAKE_JAVA_LIBRARY_OUTPUT_PATH}/${LIBRARYNAME}.jar COMMENT "Java Archive") ADD_CUSTOM_COMMAND(SOURCE ${LIBRARYNAME}_target @@ -63,4 +72,4 @@ ELSE(CMAKE_JAVA_COMPILER AND CMAKE_JAVA_ARCHIVE) MESSAGE(SEND_ERROR "Java compiler and/or Java archiver not found") ENDIF(CMAKE_JAVA_COMPILER AND CMAKE_JAVA_ARCHIVE) -ENDMACRO(ADD_JAVA_LIBRARY LIBRARYNAME SOURCES) \ No newline at end of file +ENDMACRO(ADD_JAVA_LIBRARY LIBRARYNAME SOURCES) | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | |
Relationships |
Notes | |
(0006504) Bill Hoffman (manager) 2007-02-21 10:46 |
Will this work with 2.4.6? |
(0041295) Kitware Robot (administrator) 2016-06-10 14:27 |
Resolving issue as `moved`. This issue tracker is no longer used. Further discussion of this issue may take place in the current CMake Issues page linked in the banner at the top of this page. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2016-06-10 14:27 | Kitware Robot | Note Added: 0041295 | |
2016-06-10 14:27 | Kitware Robot | Status | assigned => resolved |
2016-06-10 14:27 | Kitware Robot | Resolution | open => moved |
2016-06-10 14:30 | Kitware Robot | Status | resolved => closed |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |