CMakeLists.txt 1.5 KB

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