43 lines
1.5 KiB
CMake
43 lines
1.5 KiB
CMake
cmake_minimum_required (VERSION 2.6)
|
|
PROJECT(hello Java)
|
|
SET(CMAKE_VERBOSE_MAKEFILE 1)
|
|
|
|
IF("${hello_SOURCE_DIR}" STREQUAL "${hello_BINARY_DIR}")
|
|
MESSAGE("In Source, building Java using ADD_CUSTOM_COMMAND()")
|
|
SET(OLD_CUSTOM_COMMAND_WAY 1)
|
|
ELSE("${hello_SOURCE_DIR}" STREQUAL "${hello_BINARY_DIR}")
|
|
MESSAGE("Out of source, using built-in Java support")
|
|
SET(OLD_CUSTOM_COMMAND_WAY )
|
|
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)
|
|
|
|
ELSE(NOT 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(NOT OLD_CUSTOM_COMMAND_WAY)
|
|
|