ADD_CUSTOM_COMMAND

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ADD_CUSTOM_COMMAND

Keyan-2
hi,

i am tryting to build java code in my otherwise c++ project. for some reason, i just cant get add_custom_command to do what i want it to do. here are the lines of code that i am currently trying:

SET(MY_FILES FirstJavaFile SecondJavaFile)
SET(CLASS_FILES "")
SET(JAVA_FILES "")
FOREACH(f ${MY_FILES})
  SET(CLASS_FILES "${CLASS_FILES} ${PROJECT_BINARY_DIR}/${CLASS_DIR}/${f}.class")
  SET(JAVA_FILES "${JAVA_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/${f}.java")
ENDFOREACH(f JAVA_FILES)
message("Java files:  \"${JAVA_FILES}\"")
message("Class files: \"${CLASS_FILES}\"")

# compile all .java files with javac to .class
ADD_CUSTOM_COMMAND(
    OUTPUT  ${CLASS_FILES}
    DEPENDS ${JAVA_FILES}
    COMMAND ${CMAKE_Java_COMPILER} ARGS -d ${PROJECT_BINARY_DIR}/${CLASS_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.java
)


From my understanding of what add_custom_command should be doing, this should compile FIrstJavaFile.java and SecondJavaFile.java to class files, if they have been changed. but it does nothing.

i am thankful for any tip.

regards,
keyan
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: ADD_CUSTOM_COMMAND

Keyan-2
hi,

i found the problem, just in case anyone is interested. the problem was, that i use "package first.second.third;" in my java-sources, so that the class files are compiled to
${CMAKE_CURRENT_BINARY_DIR}/first/second/third/file.class and not to
${CMAKE_CURRENT_BINARY_DIR}/file.class, which is while the depend never found the class files.

the remaining problem is to build the jar file on dependency of changes of the class files. what i am currently trying is:

SET(MY_FILES File1 File2 File3)
SET(CLASS_FILES)

FOREACH(f ${MY_FILES})
  LIST(APPEND CLASS_FILES ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_PATH}/${f}.class)
ENDFOREACH(f ${MY_FILES})

ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/${JAR_DIR}/${JAR_FILE}
    DEPENDS ${CLASS_FILES}
    COMMAND ${CMAKE_COMMAND}
    ARGS -E chdir ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_Java_ARCHIVE} cfm ${CMAKE_BINARY_DIR}/${JAR_DIR}/${JAR_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/MANIFEST.MF org)


ADD_CUSTOM_TARGET(${JAR_FILE}
    ALL
    DEPENDS ${PROJECT_BINARY_DIR}/${JAR_DIR}/${JAR_FILE})

but the jar files is build every time i call make.

regards,
keyan

On 10 Dec 2009, at 18:14, Keyan wrote:

> hi,
>
> i am tryting to build java code in my otherwise c++ project. for some reason, i just cant get add_custom_command to do what i want it to do. here are the lines of code that i am currently trying:
>
> SET(MY_FILES FirstJavaFile SecondJavaFile)
> SET(CLASS_FILES "")
> SET(JAVA_FILES "")
> FOREACH(f ${MY_FILES})
>  SET(CLASS_FILES "${CLASS_FILES} ${PROJECT_BINARY_DIR}/${CLASS_DIR}/${f}.class")
>  SET(JAVA_FILES "${JAVA_FILES} ${CMAKE_CURRENT_SOURCE_DIR}/${f}.java")
> ENDFOREACH(f JAVA_FILES)
> message("Java files:  \"${JAVA_FILES}\"")
> message("Class files: \"${CLASS_FILES}\"")
>
> # compile all .java files with javac to .class
> ADD_CUSTOM_COMMAND(
>    OUTPUT  ${CLASS_FILES}
>    DEPENDS ${JAVA_FILES}
>    COMMAND ${CMAKE_Java_COMPILER} ARGS -d ${PROJECT_BINARY_DIR}/${CLASS_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.java
> )
>
>
> From my understanding of what add_custom_command should be doing, this should compile FIrstJavaFile.java and SecondJavaFile.java to class files, if they have been changed. but it does nothing.
>
> i am thankful for any tip.
>
> regards,
> keyan
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake