[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