cmake: Fix ortools-java depends

This commit is contained in:
Mizux Seiha
2020-10-08 16:16:10 +02:00
parent 5149b9d16a
commit 333403197a
4 changed files with 26 additions and 10 deletions

View File

@@ -74,7 +74,7 @@ file(GLOB_RECURSE proto_java_files RELATIVE ${PROJECT_SOURCE_DIR}
)
list(REMOVE_ITEM proto_java_files "ortools/constraint_solver/demon_profiler.proto")
list(REMOVE_ITEM proto_java_files "ortools/constraint_solver/assignment.proto")
foreach(PROTO_FILE ${proto_java_files})
foreach(PROTO_FILE IN LISTS proto_java_files)
#message(STATUS "protoc proto(java): ${PROTO_FILE}")
get_filename_component(PROTO_DIR ${PROTO_FILE} DIRECTORY)
string(REGEX REPLACE "_" "" PROTO_DIR ${PROTO_DIR})
@@ -152,19 +152,36 @@ add_custom_target(java_native_package
set(JAVA_PROJECT_PATH ${PROJECT_BINARY_DIR}/java/${JAVA_PROJECT})
file(MAKE_DIRECTORY ${JAVA_PROJECT_PATH}/${JAVA_PACKAGE_PATH})
file(COPY ${PROJECT_SOURCE_DIR}/ortools/java/com
DESTINATION ${JAVA_PROJECT_PATH}/src/main/java)
file(COPY ${PROJECT_SOURCE_DIR}/ortools/java/Loader.java
DESTINATION ${JAVA_PROJECT_PATH}/${JAVA_PACKAGE_PATH})
configure_file(
${PROJECT_SOURCE_DIR}/ortools/java/pom-local.xml.in
${JAVA_PROJECT_PATH}/pom.xml
@ONLY)
file(GLOB_RECURSE java_files RELATIVE ${PROJECT_SOURCE_DIR}/ortools/java
"ortools/java/*.java")
list(REMOVE_ITEM java_files "CMakeTest.java")
#message(WARNING "list: ${java_files}")
set(JAVA_SRCS)
foreach(JAVA_FILE IN LISTS java_files)
#message(STATUS "java: ${JAVA_FILE}")
set(JAVA_OUT ${JAVA_PROJECT_PATH}/src/main/java/${JAVA_FILE})
#message(STATUS "java out: ${JAVA_OUT}")
add_custom_command(
OUTPUT ${JAVA_OUT}
COMMAND ${CMAKE_COMMAND} -E copy
${PROJECT_SOURCE_DIR}/ortools/java/${JAVA_FILE}
${JAVA_OUT}
DEPENDS ${PROJECT_SOURCE_DIR}/ortools/java/${JAVA_FILE}
COMMENT "Copy Java file ${JAVA_FILE}"
VERBATIM)
list(APPEND JAVA_SRCS ${JAVA_OUT})
endforeach()
add_custom_target(java_package ALL
DEPENDS
${JAVA_PROJECT_PATH}/pom.xml
${JAVA_SRCS}
COMMAND ${MAVEN_EXECUTABLE} compile
COMMAND ${MAVEN_EXECUTABLE} package
COMMAND ${MAVEN_EXECUTABLE} install

View File

@@ -317,7 +317,7 @@ $(JAVA_ORTOOLS_JAR): \
$(GEN_DIR)/java/com/google/ortools/sat/SatParameters.java \
$(GEN_DIR)/java/com/google/ortools/util/OptionalBoolean.java \
$(GEN_DIR)/java/com/google/ortools/sat/CpModelProto.java \
$(SRC_DIR)/ortools/java/Loader.java \
$(SRC_DIR)/ortools/java/com/google/ortools/Loader.java \
$(SRC_DIR)/ortools/java/com/google/ortools/sat/IntervalVar.java \
$(SRC_DIR)/ortools/java/com/google/ortools/sat/Literal.java \
$(SRC_DIR)/ortools/java/com/google/ortools/sat/CpSolver.java \
@@ -432,7 +432,7 @@ $(TEMP_JAVA_DIR)/$(JAVA_ORTOOLS_PROJECT)/timestamp: \
$(GEN_DIR)/java/com/google/ortools/sat/SatParameters.java \
$(GEN_DIR)/java/com/google/ortools/util/OptionalBoolean.java \
$(GEN_DIR)/java/com/google/ortools/sat/CpModelProto.java \
$(SRC_DIR)/ortools/java/Loader.java \
$(SRC_DIR)/ortools/java/com/google/ortools/Loader.java \
$(SRC_DIR)/ortools/java/com/google/ortools/sat/IntervalVar.java \
$(SRC_DIR)/ortools/java/com/google/ortools/sat/Literal.java \
$(SRC_DIR)/ortools/java/com/google/ortools/sat/CpSolver.java \
@@ -457,7 +457,6 @@ else
$(COPYREC) /E /I $(SRC_DIR)$Sortools$Sjava$Scom $(JAVA_PATH)$Sjava$Scom
$(COPYREC) /E /I $(GEN_PATH)$Sjava$Scom $(JAVA_PATH)$Sjava$Scom
endif
$(COPY) $(SRC_DIR)$Sortools$Sjava$SLoader.java $(JAVA_PATH)$Sjava$Scom$Sgoogle$Sortools
cd $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT) && "$(MVN_BIN)" compile
cd $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT) && "$(MVN_BIN)" package
cd $(TEMP_JAVA_DIR)$S$(JAVA_ORTOOLS_PROJECT) && "$(MVN_BIN)" install

View File

@@ -20,7 +20,7 @@ You'll need a "Java SDK >= 1.8" and "Maven >= 3.6".
# Directory Layout
* [pom-native.xml.in](pom-native.xml.in) POM template to build the native project.
* [Loader.java](Loader.java) Helper to unpack and load the correct native libraries.
* [com/google/ortools/Loader.java](com/google/ortools/Loader.java) Helper to unpack and load the correct native libraries.
* [pom-local.xml.in](pom-local.xml.in) POM template to build the "pure" Java project.
* [pom-sample.xml.in](pom-sample.xml.in) POM template used to build samples and examples.
* [pom-test.xml.in](pom-test.xml.in) POM template used to build tests.