<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
O/H Gerrick Bivins &#941;&#947;&#961;&#945;&#968;&#949;:
<blockquote cite="mid:C497E636.93C%25gbivins@objectreservoir.com"
 type="cite">
  <title>Compiling java files to classes then creating a jar</title>
  <font size="4"><font face="Calibri, Verdana, Helvetica, Arial"><span
 style="font-size: 11pt;">Hello,<br>
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<br>
I&#8217;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?<br>
Does, FOREACH support this? I&#8217;m unable to find much info on it in the
&#8220;Mastering Cmake&#8221; book.<br>
Gerrick</span></font></font></blockquote>
Dear Gerrick,<br>
<br>
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:<br>
<br>
<tt>IF ( ENABLE_JAVA_SUPPORT )<br>
&nbsp;&nbsp;&nbsp; MESSAGE ( STATUS "Searching for Java..." )<br>
&nbsp;&nbsp;&nbsp; FIND_PACKAGE ( Java )<br>
&nbsp;&nbsp;&nbsp; FIND_PACKAGE ( JNI )<br>
ENDIF ( ENABLE_JAVA_SUPPORT )<br>
IF ( JAVA_COMPILE )<br>
&nbsp; MESSAGE ( STATUS " ===========================================" )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; Java" )<br>
&nbsp; MESSAGE ( STATUS " ===========================================" )<br>
&nbsp; ##
=========================================================================<br>
&nbsp; ##&nbsp; Get Java version...<br>
&nbsp; ##
=========================================================================<br>
&nbsp; EXECUTE_PROCESS ( COMMAND ${JAVA_COMPILE} -version<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OUTPUT_VARIABLE JAVA_OUTPUT<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ERROR_VARIABLE&nbsp; JAVA_ERROR_OUTPUT<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RESULT_VARIABLE JAVA_RETURN_VALUE )<br>
&nbsp; IF ( NOT JAVA_RETURN_VALUE )<br>
&nbsp;&nbsp;&nbsp; STRING ( REGEX MATCH [0-9._]+ JAVA_VERSION ${JAVA_ERROR_OUTPUT} )<br>
&nbsp; ENDIF ( NOT JAVA_RETURN_VALUE )<br>
<br>
&nbsp; GET_FILENAME_COMPONENT (JAVA_BIN_PATH "${JAVA_COMPILE}" PATH)<br>
&nbsp; FIND_PROGRAM ( JAVA_JAVA_H javah PATHS ${JAVA_BIN_PATH} )<br>
<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_VERSION:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_VERSION} )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_RUNTIME:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_RUNTIME} )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_COMPILE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_COMPILE} )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_ARCHIVE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_ARCHIVE} )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_JAVA_H:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_JAVA_H} )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_INCLUDE_PATH:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_INCLUDE_PATH} )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_INCLUDE_PATH2:&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_INCLUDE_PATH2} )<br>
&nbsp; MESSAGE ( STATUS "&nbsp; JAVA_JVM_LIBRARY:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " ${JAVA_JVM_LIBRARY} )<br>
&nbsp; SET ( PKG_SUPPORT_JAVA 1 )<br>
ENDIF ( JAVA_COMPILE )<br>
SET ( TCLBLEND_JAR_SRCS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/CObject.java<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/IdleHandler.java<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/Interp.java<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/Notifier.java<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/TclList.java<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/TclObject.java<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/TimerHandler.java<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl/lang/Util.java )<br>
IF ( WIN32 )<br>
&nbsp; SET&nbsp; ( tcljava_CLASSPATH<br>
&nbsp;&nbsp;&nbsp; ".\;../empty/empty.jar\;../tcljava\;${CMAKE_CURRENT_BINARY_DIR}" )<br>
ELSE ( WIN32 )<br>
&nbsp; SET&nbsp; ( tcljava_CLASSPATH<br>
&nbsp;&nbsp;&nbsp; ".:../empty/empty.jar:../tcljava:${CMAKE_CURRENT_BINARY_DIR}" )<br>
ENDIF ( WIN32 )<br>
ADD_CUSTOM_TARGET ( tcljava.jar.classes<br>
&nbsp;&nbsp;&nbsp; COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -classpath ${tcljava_CLASSPATH} ${TCLJAVA_JAR_SRCS}<br>
&nbsp;&nbsp;&nbsp; WORKING_DIRECTORY src/tcljava )<br>
ADD_CUSTOM_TARGET ( tcljava.jar<br>
&nbsp;&nbsp;&nbsp; COMMAND ${JAVA_ARCHIVE} cvf ${CMAKE_CURRENT_BINARY_DIR}/tcljava.jar<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcl<br>
&nbsp;&nbsp;&nbsp; WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )<br>
ADD_DEPENDENCIES ( tcljava.jar tcljava.jar.classes )<br>
<br>
</tt>George<br>
</body>
</html>