PROJECT(hello Java) SET(CMAKE_VERBOSE_MAKEFILE 1) SET(OLD_CUSTOM_COMMAND_WAY ) message("${hello_SOURCE_DIR} STREQUAL ${hello_BINARY_DIR}") IF("${hello_SOURCE_DIR}" STREQUAL "${hello_BINARY_DIR}") SET(OLD_CUSTOM_COMMAND_WAY 1) ENDIF("${hello_SOURCE_DIR}" STREQUAL "${hello_BINARY_DIR}") IF(NOT OLD_CUSTOM_COMMAND_WAY) INCLUDE_DIRECTORIES(${hello_SOURCE_DIR} ${hello_BINARY_DIR} ) ADD_LIBRARY(hello A.java HelloWorld.java) ENDIF(NOT OLD_CUSTOM_COMMAND_WAY) IF(OLD_CUSTOM_COMMAND_WAY) ADD_CUSTOM_COMMAND( OUTPUT ${hello_BINARY_DIR}/A.class MAIN_DEPENDENCY ${hello_SOURCE_DIR}/A.java COMMAND ${CMAKE_Java_COMPILER} ARGS -classpath . -d ${hello_BINARY_DIR} ${hello_SOURCE_DIR}/A.java) ADD_CUSTOM_COMMAND( OUTPUT ${hello_BINARY_DIR}/HelloWorld.class MAIN_DEPENDENCY ${hello_SOURCE_DIR}/HelloWorld.java DEPENDS ${hello_BINARY_DIR}/A.class COMMAND ${CMAKE_Java_COMPILER} ARGS -classpath . -d ${hello_BINARY_DIR} ${hello_SOURCE_DIR}/HelloWorld.java) ADD_CUSTOM_COMMAND( OUTPUT ${hello_BINARY_DIR}/hello.jar DEPENDS ${hello_BINARY_DIR}/A.class ${hello_BINARY_DIR}/HelloWorld.class COMMAND ${CMAKE_COMMAND} ARGS -E chdir ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_Java_ARCHIVE} -cvf hello.jar *.class) ADD_CUSTOM_TARGET(hello.jar ALL DEPENDS ${hello_BINARY_DIR}/hello.jar) ENDIF(OLD_CUSTOM_COMMAND_WAY)