CMakeLists.txt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. PROJECT(hello Java)
  2. SET(CMAKE_VERBOSE_MAKEFILE 1)
  3. IF("${hello_SOURCE_DIR}" STREQUAL "${hello_BINARY_DIR}")
  4. MESSAGE("In Source, building Java using ADD_CUSTOM_COMMAND()")
  5. SET(OLD_CUSTOM_COMMAND_WAY 1)
  6. ELSE("${hello_SOURCE_DIR}" STREQUAL "${hello_BINARY_DIR}")
  7. MESSAGE("Out of source, using built-in Java support")
  8. SET(OLD_CUSTOM_COMMAND_WAY )
  9. ENDIF("${hello_SOURCE_DIR}" STREQUAL "${hello_BINARY_DIR}")
  10. IF(NOT OLD_CUSTOM_COMMAND_WAY)
  11. INCLUDE_DIRECTORIES(${hello_SOURCE_DIR}
  12. ${hello_BINARY_DIR} )
  13. ADD_LIBRARY(hello A.java HelloWorld.java)
  14. ELSE(NOT OLD_CUSTOM_COMMAND_WAY)
  15. ADD_CUSTOM_COMMAND(
  16. OUTPUT ${hello_BINARY_DIR}/A.class
  17. MAIN_DEPENDENCY ${hello_SOURCE_DIR}/A.java
  18. COMMAND ${CMAKE_Java_COMPILER} ARGS -classpath . -d ${hello_BINARY_DIR} ${hello_SOURCE_DIR}/A.java)
  19. ADD_CUSTOM_COMMAND(
  20. OUTPUT ${hello_BINARY_DIR}/HelloWorld.class
  21. MAIN_DEPENDENCY ${hello_SOURCE_DIR}/HelloWorld.java
  22. DEPENDS ${hello_BINARY_DIR}/A.class
  23. COMMAND ${CMAKE_Java_COMPILER} ARGS -classpath . -d ${hello_BINARY_DIR} ${hello_SOURCE_DIR}/HelloWorld.java)
  24. ADD_CUSTOM_COMMAND(
  25. OUTPUT ${hello_BINARY_DIR}/hello.jar
  26. DEPENDS ${hello_BINARY_DIR}/A.class ${hello_BINARY_DIR}/HelloWorld.class
  27. COMMAND ${CMAKE_COMMAND}
  28. ARGS -E chdir ${CMAKE_CURRENT_BINARY_DIR}
  29. ${CMAKE_Java_ARCHIVE}
  30. -cvf hello.jar *.class)
  31. ADD_CUSTOM_TARGET(hello_jar ALL
  32. DEPENDS ${hello_BINARY_DIR}/hello.jar)
  33. ENDIF(NOT OLD_CUSTOM_COMMAND_WAY)