[CMake] Compiling java files to classes then creating a jar

Georgios Petasis petasisg at yahoo.gr
Tue Jul 8 01:20:33 EDT 2008


O/H Gerrick Bivins ??????:
> Hello,
> Another newbie question, I think I know how to create .java files from 
> swig using Cmake and I think I know how to create a jar file from 
> .class BUT
> I'm not sure how to call the java compiler (javac) on each .java file 
> to create my .class files. For starters, how would I loop over the 
> *.java files in a given directory?
> Does, FOREACH support this? I'm unable to find much info on it in the 
> "Mastering Cmake" book.
> Gerrick
Dear Gerrick,

I am not sure if this is the correct answer (I am also a newbie :-) ), 
but I have added these commands to my CMakeLists.txt:

IF ( ENABLE_JAVA_SUPPORT )
    MESSAGE ( STATUS "Searching for Java..." )
    FIND_PACKAGE ( Java )
    FIND_PACKAGE ( JNI )
ENDIF ( ENABLE_JAVA_SUPPORT )
IF ( JAVA_COMPILE )
  MESSAGE ( STATUS " ===========================================" )
  MESSAGE ( STATUS "  Java" )
  MESSAGE ( STATUS " ===========================================" )
  ## 
=========================================================================
  ##  Get Java version...
  ## 
=========================================================================
  EXECUTE_PROCESS ( COMMAND ${JAVA_COMPILE} -version
                    OUTPUT_VARIABLE JAVA_OUTPUT
                    ERROR_VARIABLE  JAVA_ERROR_OUTPUT
                    RESULT_VARIABLE JAVA_RETURN_VALUE )
  IF ( NOT JAVA_RETURN_VALUE )
    STRING ( REGEX MATCH [0-9._]+ JAVA_VERSION ${JAVA_ERROR_OUTPUT} )
  ENDIF ( NOT JAVA_RETURN_VALUE )

  GET_FILENAME_COMPONENT (JAVA_BIN_PATH "${JAVA_COMPILE}" PATH)
  FIND_PROGRAM ( JAVA_JAVA_H javah PATHS ${JAVA_BIN_PATH} )

  MESSAGE ( STATUS "  JAVA_VERSION:           " ${JAVA_VERSION} )
  MESSAGE ( STATUS "  JAVA_RUNTIME:           " ${JAVA_RUNTIME} )
  MESSAGE ( STATUS "  JAVA_COMPILE:           " ${JAVA_COMPILE} )
  MESSAGE ( STATUS "  JAVA_ARCHIVE:           " ${JAVA_ARCHIVE} )
  MESSAGE ( STATUS "  JAVA_JAVA_H:            " ${JAVA_JAVA_H} )
  MESSAGE ( STATUS "  JAVA_INCLUDE_PATH:      " ${JAVA_INCLUDE_PATH} )
  MESSAGE ( STATUS "  JAVA_INCLUDE_PATH2:     " ${JAVA_INCLUDE_PATH2} )
  MESSAGE ( STATUS "  JAVA_JVM_LIBRARY:       " ${JAVA_JVM_LIBRARY} )
  SET ( PKG_SUPPORT_JAVA 1 )
ENDIF ( JAVA_COMPILE )
SET ( TCLBLEND_JAR_SRCS               tcl/lang/CObject.java
                                      tcl/lang/IdleHandler.java
                                      tcl/lang/Interp.java
                                      tcl/lang/Notifier.java
                                      tcl/lang/TclList.java
                                      tcl/lang/TclObject.java
                                      tcl/lang/TimerHandler.java
                                      tcl/lang/Util.java )
IF ( WIN32 )
  SET  ( tcljava_CLASSPATH
    ".\;../empty/empty.jar\;../tcljava\;${CMAKE_CURRENT_BINARY_DIR}" )
ELSE ( WIN32 )
  SET  ( tcljava_CLASSPATH
    ".:../empty/empty.jar:../tcljava:${CMAKE_CURRENT_BINARY_DIR}" )
ENDIF ( WIN32 )
ADD_CUSTOM_TARGET ( tcljava.jar.classes
    COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}
            -classpath ${tcljava_CLASSPATH} ${TCLJAVA_JAR_SRCS}
    WORKING_DIRECTORY src/tcljava )
ADD_CUSTOM_TARGET ( tcljava.jar
    COMMAND ${JAVA_ARCHIVE} cvf ${CMAKE_CURRENT_BINARY_DIR}/tcljava.jar
            tcl
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
ADD_DEPENDENCIES ( tcljava.jar tcljava.jar.classes )

George
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20080708/93c48db4/attachment.htm>


More information about the CMake mailing list