Added cmake support for C++, initial python build support
This commit is contained in:
77
CMakeLists.txt
Normal file
77
CMakeLists.txt
Normal file
@@ -0,0 +1,77 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
|
||||
|
||||
PROJECT(or_tools LANGUAGES CXX)
|
||||
SET(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
|
||||
IF(UNIX)
|
||||
IF(NOT APPLE)
|
||||
INCLUDE(GNUInstallDirs)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fwrapv -DNDEBUG")
|
||||
|
||||
IF(BUILD_PYTHON)
|
||||
SET(BUILD_CXX ON)
|
||||
FIND_PACKAGE(PythonInterp)
|
||||
FIND_PACKAGE(PythonLibs)
|
||||
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
|
||||
|
||||
IF(PYTHON_VERSION_MAJOR GREATER_EQUAL 3)
|
||||
SET(CMAKE_SWIG_FLAGS "${CMAKE_SWIG_FLAGS};-py3;-DPY3")
|
||||
ENDIF()
|
||||
|
||||
FIND_PACKAGE(SWIG REQUIRED)
|
||||
INCLUDE(cmake/UseSWIG.cmake)
|
||||
ENDIF(BUILD_PYTHON)
|
||||
|
||||
IF(BUILD_CXX)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_GLOP -DUSE_BOP")
|
||||
|
||||
FIND_PACKAGE(Protobuf REQUIRED)
|
||||
FIND_PACKAGE(Gflags REQUIRED)
|
||||
|
||||
PKG_CHECK_MODULES(CBC cbc)
|
||||
IF(CBC_FOUND)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CBC_CFLAGS} -DUSE_CBC")
|
||||
ENDIF(CBC_FOUND)
|
||||
|
||||
PKG_CHECK_MODULES(CLP clp)
|
||||
IF(CLP_FOUND)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLP_CFLAGS} -DUSE_CLP")
|
||||
ENDIF(CLP_FOUND)
|
||||
|
||||
INCLUDE_DIRECTORIES(.)
|
||||
INCLUDE_DIRECTORIES(examples)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
SET(SUBTARGETS "")
|
||||
|
||||
FOREACH(SUBPROJECT base util lp_data glop graph algorithms sat bop linear_solver constraint_solver)
|
||||
ADD_SUBDIRECTORY(ortools/${SUBPROJECT})
|
||||
LIST(APPEND SUBTARGETS "$<TARGET_OBJECTS:${PROJECT_NAME}_${SUBPROJECT}>")
|
||||
ENDFOREACH()
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SUBTARGETS})
|
||||
INSTALL(TARGETS ${PROJECT_NAME}
|
||||
EXPORT ${PROJECT_NAME}_Exports
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
ADD_SUBDIRECTORY(examples/cpp)
|
||||
ENDIF(BUILD_CXX)
|
||||
|
||||
IF(BUILD_PYTHON)
|
||||
FOREACH(SUBPROJECT constraint_solver algorithms graph linear_solver)
|
||||
ADD_SUBDIRECTORY(ortools/${SUBPROJECT}/python)
|
||||
ENDFOREACH(SUBPROJECT constraint_solver algorithms)
|
||||
ENDIF(BUILD_PYTHON)
|
||||
|
||||
INSTALL(DIRECTORY ortools
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING PATTERN "*.h")
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ortools
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING PATTERN "*.pb.h"
|
||||
PATTERN CMakeFiles EXCLUDE)
|
||||
239
cmake/UseSWIG.cmake
Normal file
239
cmake/UseSWIG.cmake
Normal file
@@ -0,0 +1,239 @@
|
||||
SET(SWIG_CXX_EXTENSION cxx)
|
||||
SET(SWIG_EXTRA_LIBRARIES "")
|
||||
|
||||
SET(SWIG_PYTHON_EXTRA_FILE_EXTENSIONS .py)
|
||||
SET(SWIG_JAVA_EXTRA_FILE_EXTENSIONS .java JNI.java)
|
||||
|
||||
MACRO(SWIG_MODULE_INITIALIZE NAME LANGUAGE)
|
||||
STRING(TOUPPER "${LANGUAGE}" SWIG_UPPERCASE_LANGUAGE)
|
||||
STRING(TOLOWER "${LANGUAGE}" SWIG_LOWERCASE_LANGUAGE)
|
||||
|
||||
SET(SWIG_MODULE_${NAME}_LANGUAGE ${SWIG_UPPERCASE_LANGUAGE})
|
||||
SET(SWIG_MODULE_${NAME}_SWIG_LANGUAGE_FLAG ${SWIG_LOWERCASE_LANGUAGE})
|
||||
|
||||
SET(SWIG_MODULE_${NAME}_REAL_NAME ${NAME})
|
||||
|
||||
IF(";${CMAKE_SWIG_FLAGS};" MATCHES ";-noproxy;")
|
||||
SET(SWIG_MODULE_${NAME}_NOPROXY TRUE)
|
||||
ENDIF()
|
||||
|
||||
IF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xUNKNOWN")
|
||||
MESSAGE(FATAL_ERROR "SWIG Error: Language \"${LANGUAGE}\" not found")
|
||||
ELSEIF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xPYTHON" AND NOT SWIG_MODULE_${NAME}_NOPROXY)
|
||||
SET(SWIG_MODULE_${NAME}_REAL_NAME "_${NAME}")
|
||||
ELSEIF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xPERL")
|
||||
SET(SWIG_MODULE_${NAME}_EXTRA_FLAGS "-shadow")
|
||||
ELSEIF("x${SWIG_MODULE_${NAME}_LANGUAGE}" STREQUAL "xCSHARP")
|
||||
SET(SWIG_MODULE_${NAME}_EXTRA_FLAGS "-dllimport;${NAME}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(SWIG_GET_EXTRA_OUTPUT_FILES LANGUAGE OUTFILES GENERATEDPATH INFILE)
|
||||
SET(${OUTFILES} "")
|
||||
GET_SOURCE_FILE_PROPERTY(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename ${INFILE} SWIG_MODULE_NAME)
|
||||
|
||||
IF(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename STREQUAL "NOTFOUND")
|
||||
IF(EXISTS ${INFILE})
|
||||
FILE(STRINGS ${INFILE} _MODULE_NAME REGEX "[ ]*%module[ ]*[a-zA-Z0-9_]+.*")
|
||||
ENDIF()
|
||||
|
||||
IF(_MODULE_NAME)
|
||||
STRING(REGEX REPLACE "[ ]*%module[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}")
|
||||
SET(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}")
|
||||
ELSE()
|
||||
IF(EXISTS ${INFILE})
|
||||
FILE(STRINGS ${INFILE} _MODULE_NAME REGEX "[ ]*%module[ ]*\\(.*\\)[ ]*[a-zA-Z0-9_]+.*")
|
||||
ENDIF()
|
||||
|
||||
IF(_MODULE_NAME)
|
||||
STRING(REGEX REPLACE "[ ]*%module[ ]*\\(.*\\)[ ]*([a-zA-Z0-9_]+).*" "\\1" _MODULE_NAME "${_MODULE_NAME}")
|
||||
SET(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename "${_MODULE_NAME}")
|
||||
ELSE()
|
||||
GET_FILENAME_COMPONENT(SWIG_GET_EXTRA_OUTPUT_FILES_module_basename ${INFILE} NAME_WE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
FOREACH(IT ${SWIG_${LANGUAGE}_EXTRA_FILE_EXTENSIONS})
|
||||
SET(${OUTFILES} ${${OUTFILES}} "${GENERATEDPATH}/${SWIG_GET_EXTRA_OUTPUT_FILES_module_basename}${IT}")
|
||||
ENDFOREACH()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(SWIG_ADD_SOURCE_TO_MODULE NAME OUTFILES INFILE)
|
||||
SET(SWIG_FULL_INFILE ${INFILE})
|
||||
GET_FILENAME_COMPONENT(SWIG_SOURCE_FILE_NAME_WE "${INFILE}" NAME_WE)
|
||||
GET_SOURCE_FILE_PROPERTY(SWIG_SOURCE_FILE_GENERATED ${INFILE} GENERATED)
|
||||
GET_SOURCE_FILE_PROPERTY(SWIG_SOURCE_FILE_CPLUSPLUS ${INFILE} CPLUSPLUS)
|
||||
GET_SOURCE_FILE_PROPERTY(SWIG_SOURCE_FILE_FLAGS ${INFILE} SWIG_FLAGS)
|
||||
|
||||
IF("${SWIG_SOURCE_FILE_FLAGS}" STREQUAL "NOTFOUND")
|
||||
SET(SWIG_SOURCE_FILE_FLAGS "")
|
||||
ENDIF()
|
||||
|
||||
GET_FILENAME_COMPONENT(SWIG_SOURCE_FILE_FULLNAME "${INFILE}" ABSOLUTE)
|
||||
|
||||
IF(CMAKE_SWIG_OUTDIR)
|
||||
SET(SWIG_OUTDIR ${CMAKE_SWIG_OUTDIR})
|
||||
ELSE()
|
||||
SET(SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
ENDIF()
|
||||
|
||||
IF(SWIG_OUTFILE_DIR)
|
||||
SET(SWIG_OUTFILE_DIR ${SWIG_OUTFILE_DIR})
|
||||
ELSE()
|
||||
SET(SWIG_OUTFILE_DIR ${SWIG_OUTDIR})
|
||||
ENDIF()
|
||||
|
||||
IF(NOT SWIG_MODULE_${NAME}_NOPROXY)
|
||||
SWIG_GET_EXTRA_OUTPUT_FILES(${SWIG_MODULE_${NAME}_LANGUAGE}
|
||||
SWIG_EXTRA_GENERATED_FILES
|
||||
"${SWIG_OUTDIR}" "${SWIG_SOURCE_FILE_FULLNAME}")
|
||||
ENDIF()
|
||||
|
||||
SET(SWIG_GENERATED_FILE_FULLNAME "${SWIG_OUTFILE_DIR}/${SWIG_SOURCE_FILE_NAME_WE}")
|
||||
STRING(APPEND SWIG_GENERATED_FILE_FULLNAME "${SWIG_MODULE_${NAME}_LANGUAGE}_wrap")
|
||||
|
||||
IF(SWIG_SOURCE_FILE_CPLUSPLUS)
|
||||
STRING(APPEND SWIG_GENERATED_FILE_FULLNAME ".${SWIG_CXX_EXTENSION}")
|
||||
ELSE()
|
||||
STRING(APPEND SWIG_GENERATED_FILE_FULLNAME ".c")
|
||||
ENDIF()
|
||||
|
||||
GET_DIRECTORY_PROPERTY(CMAKE_INCLUDE_DIRECTORIES INCLUDE_DIRECTORIES)
|
||||
LIST(REMOVE_DUPLICATES CMAKE_INCLUDE_DIRECTORIES)
|
||||
SET(SWIG_INCLUDE_DIRS)
|
||||
|
||||
FOREACH(IT ${CMAKE_INCLUDE_DIRECTORIES})
|
||||
SET(SWIG_INCLUDE_DIRS ${SWIG_INCLUDE_DIRS} "-I${IT}")
|
||||
ENDFOREACH()
|
||||
|
||||
SET(SWIG_SPECIAL_FLAGS)
|
||||
|
||||
IF(SWIG_SOURCE_FILE_CPLUSPLUS)
|
||||
SET(SWIG_SPECIAL_FLAGS ${SWIG_SPECIAL_FLAGS} "-c++")
|
||||
ENDIF()
|
||||
|
||||
SET(SWIG_EXTRA_FLAGS)
|
||||
|
||||
IF(SWIG_MODULE_${NAME}_EXTRA_FLAGS)
|
||||
SET(SWIG_EXTRA_FLAGS ${SWIG_EXTRA_FLAGS} ${SWIG_MODULE_${NAME}_EXTRA_FLAGS})
|
||||
ENDIF()
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT "${SWIG_GENERATED_FILE_FULLNAME}" ${SWIG_EXTRA_GENERATED_FILES}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${SWIG_OUTDIR}
|
||||
COMMAND "${SWIG_EXECUTABLE}"
|
||||
ARGS "-${SWIG_MODULE_${NAME}_SWIG_LANGUAGE_FLAG}"
|
||||
${SWIG_SOURCE_FILE_FLAGS}
|
||||
${CMAKE_SWIG_FLAGS}
|
||||
-outdir ${SWIG_OUTDIR}
|
||||
${SWIG_SPECIAL_FLAGS}
|
||||
${SWIG_EXTRA_FLAGS}
|
||||
${SWIG_INCLUDE_DIRS}
|
||||
-o "${SWIG_GENERATED_FILE_FULLNAME}"
|
||||
-module "${NAME}"
|
||||
"${SWIG_SOURCE_FILE_FULLNAME}"
|
||||
MAIN_DEPENDENCY "${SWIG_SOURCE_FILE_FULLNAME}"
|
||||
DEPENDS ${SWIG_MODULE_${NAME}_EXTRA_DEPS}
|
||||
IMPLICIT_DEPENDS CXX "${SWIG_SOURCE_FILE_FULLNAME}"
|
||||
COMMENT "Swig source")
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES("${SWIG_GENERATED_FILE_FULLNAME}"
|
||||
${SWIG_EXTRA_GENERATED_FILES} PROPERTIES GENERATED TRUE)
|
||||
|
||||
SET(${OUTFILES} "${SWIG_GENERATED_FILE_FULLNAME}" ${SWIG_EXTRA_GENERATED_FILES})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(SWIG_ADD_LIBRARY NAME)
|
||||
SET(OPTIONS "")
|
||||
SET(ONEVALUEARGS LANGUAGE TYPE)
|
||||
SET(MULTIVALUEARGS SOURCES)
|
||||
|
||||
CMAKE_PARSE_ARGUMENTS(_SAM "${OPTIONS}" "${ONEVALUEARGS}" "${MULTIVALUEARGS}" ${ARGN})
|
||||
|
||||
IF(NOT DEFINED _SAM_LANGUAGE)
|
||||
MESSAGE(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing LANGUAGE argument")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT DEFINED _SAM_SOURCES)
|
||||
MESSAGE(FATAL_ERROR "SWIG_ADD_LIBRARY: Missing SOURCES argument")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT DEFINED _SAM_TYPE)
|
||||
SET(_SAM_TYPE MODULE)
|
||||
ELSEIF("${_SAM_TYPE}" STREQUAL "USE_BUILD_SHARED_LIBS")
|
||||
UNSET(_SAM_TYPE)
|
||||
ENDIF()
|
||||
|
||||
SWIG_MODULE_INITIALIZE(${NAME} ${_SAM_LANGUAGE})
|
||||
|
||||
SET(SWIG_DOT_I_SOURCES)
|
||||
SET(SWIG_OTHER_SOURCES)
|
||||
|
||||
FOREACH(IT ${_SAM_SOURCES})
|
||||
IF(${IT} MATCHES "\\.i$")
|
||||
SET(SWIG_DOT_I_SOURCES ${SWIG_DOT_I_SOURCES} "${IT}")
|
||||
ELSE()
|
||||
SET(SWIG_OTHER_SOURCES ${SWIG_OTHER_SOURCES} "${IT}")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
SET(SWIG_GENERATED_SOURCES)
|
||||
|
||||
FOREACH(IT ${SWIG_DOT_I_SOURCES})
|
||||
SWIG_ADD_SOURCE_TO_MODULE(${NAME} SWIG_GENERATED_SOURCE ${IT})
|
||||
SET(SWIG_GENERATED_SOURCES ${SWIG_GENERATED_SOURCES} "${SWIG_GENERATED_SOURCE}")
|
||||
ENDFOREACH()
|
||||
|
||||
GET_DIRECTORY_PROPERTY(SWIG_EXTRA_CLEAN_FILES ADDITIONAL_MAKE_CLEAN_FILES)
|
||||
SET_DIRECTORY_PROPERTIES(PROPERTIES
|
||||
ADDITIONAL_MAKE_CLEAN_FILES "${SWIG_EXTRA_CLEAN_FILES};${SWIG_GENERATED_SOURCES}")
|
||||
ADD_LIBRARY(${SWIG_MODULE_${NAME}_REAL_NAME} ${_SAM_TYPE} ${SWIG_GENERATED_SOURCES} ${SWIG_OTHER_SOURCES})
|
||||
|
||||
IF("${_SAM_TYPE}" STREQUAL "MODULE")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES NO_SONAME ON)
|
||||
ENDIF()
|
||||
|
||||
STRING(TOLOWER "${_SAM_LANGUAGE}" SWIG_LOWERCASE_LANGUAGE)
|
||||
|
||||
IF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "octave")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".oct")
|
||||
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "go")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
|
||||
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "java")
|
||||
|
||||
IF(APPLE)
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".jnilib")
|
||||
ENDIF(APPLE)
|
||||
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "lua")
|
||||
|
||||
IF("${_SAM_TYPE}" STREQUAL "MODULE")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
|
||||
ENDIF()
|
||||
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "python")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
|
||||
|
||||
IF(WIN32 AND NOT CYGWIN)
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".pyd")
|
||||
ENDIF()
|
||||
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "r")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
|
||||
ELSEIF("${SWIG_LOWERCASE_LANGUAGE}" STREQUAL "ruby")
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
|
||||
|
||||
IF(APPLE)
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES SUFFIX ".bundle")
|
||||
ENDIF(APPLE)
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(${SWIG_MODULE_${NAME}_REAL_NAME} PROPERTIES PREFIX "")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(SWIG_LINK_LIBRARIES NAME)
|
||||
IF(SWIG_MODULE_${NAME}_REAL_NAME)
|
||||
TARGET_LINK_LIBRARIES(${SWIG_MODULE_${NAME}_REAL_NAME} ${ARGN})
|
||||
ELSE()
|
||||
MESSAGE(SEND_ERROR "Can not find Swig library \"${NAME}\".")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
53
examples/cpp/CMakeLists.txt
Normal file
53
examples/cpp/CMakeLists.txt
Normal file
@@ -0,0 +1,53 @@
|
||||
ADD_LIBRARY(executable_libs STATIC
|
||||
cvrptw_lib.cc
|
||||
parse_dimacs_assignment.cc
|
||||
fap_model_printer.cc
|
||||
fap_parser.cc
|
||||
fap_utilities.cc)
|
||||
|
||||
FOREACH(EXECUTABLE
|
||||
costas_array
|
||||
cryptarithm
|
||||
cvrp_disjoint_tw
|
||||
cvrptw
|
||||
cvrptw_with_breaks
|
||||
cvrptw_with_refueling
|
||||
cvrptw_with_resources
|
||||
cvrptw_with_stop_times_and_resources
|
||||
dimacs_assignment
|
||||
dobble_ls
|
||||
flow_api
|
||||
frequency_assignment_problem
|
||||
golomb
|
||||
integer_programming
|
||||
jobshop
|
||||
jobshop_earlytardy
|
||||
jobshop_ls
|
||||
jobshop_sat
|
||||
linear_assignment_api
|
||||
linear_programming
|
||||
linear_solver_protocol_buffers
|
||||
ls_api
|
||||
magic_square
|
||||
model_util
|
||||
mps_driver
|
||||
multidim_knapsack
|
||||
network_routing
|
||||
nqueens
|
||||
pdptw
|
||||
rcpsp_sat
|
||||
shift_minimization_sat
|
||||
solve
|
||||
sports_scheduling
|
||||
strawberry_fields_with_column_generation
|
||||
tsp
|
||||
weighted_tardiness_sat)
|
||||
ADD_EXECUTABLE(${EXECUTABLE} ${EXECUTABLE}.cc)
|
||||
TARGET_LINK_LIBRARIES(${EXECUTABLE}
|
||||
executable_libs
|
||||
${PROJECT_NAME}
|
||||
${Protobuf_LIBRARIES}
|
||||
${gflags_LIBRARIES}
|
||||
${CBC_LIBRARIES})
|
||||
INSTALL(TARGETS ${EXECUTABLE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
ENDFOREACH()
|
||||
9
ortools/CMakeLists.txt
Normal file
9
ortools/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
ENABLE_LANGUAGE(Python)
|
||||
|
||||
PROJECT(or_tools_algorithms)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
10
ortools/algorithms/CMakeLists.txt
Normal file
10
ortools/algorithms/CMakeLists.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_algorithms)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
LIST(REMOVE_ITEM ${PROJECT_NAME}_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/hungarian_test.cc")
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
7
ortools/algorithms/python/CMakeLists.txt
Normal file
7
ortools/algorithms/python/CMakeLists.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
IF(BUILD_PYTHON)
|
||||
SET_PROPERTY(SOURCE knapsack_solver.i PROPERTY CPLUSPLUS ON)
|
||||
SET_PROPERTY(SOURCE knapsack_solver.i PROPERTY SWIG_MODULE_NAME pywrapknapsack_solver)
|
||||
|
||||
SWIG_ADD_LIBRARY(pywrapknapsack_solver TYPE MODULE LANGUAGE python SOURCES knapsack_solver.i)
|
||||
SWIG_LINK_LIBRARIES(pywrapknapsack_solver ${PROJECT_NAME})
|
||||
ENDIF(BUILD_PYTHON)
|
||||
9
ortools/base/CMakeLists.txt
Normal file
9
ortools/base/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_base)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
15
ortools/bop/CMakeLists.txt
Normal file
15
ortools/bop/CMakeLists.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_bop)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS bop_parameters.proto)
|
||||
|
||||
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
|
||||
ALL
|
||||
DEPENDS
|
||||
${PROTO_SRCS})
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
51
ortools/constraint_solver/CMakeLists.txt
Normal file
51
ortools/constraint_solver/CMakeLists.txt
Normal file
@@ -0,0 +1,51 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_constraint_solver)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
|
||||
PROTOBUF_GENERATE_CPP(SOLVER_PROTO_SRCS SOLVER_PARAM_HDRS solver_parameters.proto)
|
||||
PROTOBUF_GENERATE_CPP(MODEL__PROTO_SRCS MODEL__PROTO_HDRS model.proto)
|
||||
PROTOBUF_GENERATE_CPP(SEARCH_PROTO_SRCS SEARCH_PROTO_HDRS search_limit.proto)
|
||||
PROTOBUF_GENERATE_CPP(ASSIGN_PROTO_SRCS ASSIGN_PROTO_HDRS assignment.proto)
|
||||
PROTOBUF_GENERATE_CPP(PROFIL_PROTO_SRCS PROFIL_PROTO_HDRS demon_profiler.proto)
|
||||
PROTOBUF_GENERATE_CPP(ROUTEN_PROTO_SRCS ROUTEN_PROTO_HDRS routing_enums.proto)
|
||||
PROTOBUF_GENERATE_CPP(ROUTPA_PROTO_SRCS ROUTPA_PROTO_HDRS routing_parameters.proto)
|
||||
|
||||
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
|
||||
ALL
|
||||
DEPENDS
|
||||
${SOLVER_PROTO_SRCS}
|
||||
${MODEL__PROTO_SRCS}
|
||||
${SEARCH_PROTO_SRCS}
|
||||
${ASSIGN_PROTO_SRCS}
|
||||
${PROFIL_PROTO_SRCS}
|
||||
${ROUTEN_PROTO_SRCS}
|
||||
${ROUTPA_PROTO_SRCS})
|
||||
|
||||
|
||||
IF(BUILD_PYTHON)
|
||||
PROTOBUF_GENERATE_PYTHON(PY_ASSIGN_PROTO_SRCS assignment.proto)
|
||||
PROTOBUF_GENERATE_PYTHON(PY_SEARCH_PROTO_SRCS search_limit.proto)
|
||||
PROTOBUF_GENERATE_PYTHON(PY_MODEL__PROTO_SRCS model.proto)
|
||||
PROTOBUF_GENERATE_PYTHON(PY_ROUTEN_PROTO_SRCS routing_enums.proto)
|
||||
PROTOBUF_GENERATE_PYTHON(PY_SOLVER_PROTO_SRCS solver_parameters.proto)
|
||||
PROTOBUF_GENERATE_PYTHON(PY_ROUTPA_PROTO_SRCS routing_parameters.proto)
|
||||
ENDIF(BUILD_PYTHON)
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME}
|
||||
OBJECT
|
||||
${${PROJECT_NAME}_SOURCES}
|
||||
${SOLVER_PROTO_SRCS}
|
||||
${MODEL__PROTO_SRCS}
|
||||
${SEARCH_PROTO_SRCS}
|
||||
${ASSIGN_PROTO_SRCS}
|
||||
${PROFIL_PROTO_SRCS}
|
||||
${ROUTEN_PROTO_SRCS}
|
||||
${ROUTPA_PROTO_SRCS})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
ADD_DEPENDENCIES(${PROJECT_NAME}
|
||||
ForceProtobufGen_${ROOT_PROJECT}_glop
|
||||
ForceProtobufGen_${ROOT_PROJECT}_linear_solver
|
||||
ForceProtobufGen_${ROOT_PROJECT}_sat)
|
||||
7
ortools/constraint_solver/python/CMakeLists.txt
Normal file
7
ortools/constraint_solver/python/CMakeLists.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
IF(BUILD_PYTHON)
|
||||
SET_PROPERTY(SOURCE routing.i PROPERTY CPLUSPLUS ON)
|
||||
SET_PROPERTY(SOURCE routing.i PROPERTY SWIG_MODULE_NAME pywrapcp)
|
||||
|
||||
SWIG_ADD_LIBRARY(pywrapcp TYPE MODULE LANGUAGE python SOURCES routing.i)
|
||||
SWIG_LINK_LIBRARIES(pywrapcp ${PROJECT_NAME})
|
||||
ENDIF(BUILD_PYTHON)
|
||||
15
ortools/glop/CMakeLists.txt
Normal file
15
ortools/glop/CMakeLists.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(or_tools_glop)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS parameters.proto)
|
||||
|
||||
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
|
||||
ALL
|
||||
DEPENDS
|
||||
${PROTO_SRCS})
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
15
ortools/graph/CMakeLists.txt
Normal file
15
ortools/graph/CMakeLists.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_graph)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS flow_problem.proto)
|
||||
|
||||
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
|
||||
ALL
|
||||
DEPENDS
|
||||
${PROTO_SRCS})
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
7
ortools/graph/python/CMakeLists.txt
Normal file
7
ortools/graph/python/CMakeLists.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
IF(BUILD_PYTHON)
|
||||
SET_PROPERTY(SOURCE graph.i PROPERTY CPLUSPLUS ON)
|
||||
SET_PROPERTY(SOURCE graph.i PROPERTY SWIG_MODULE_NAME pywrapgraph)
|
||||
|
||||
SWIG_ADD_LIBRARY(pywrapgraph TYPE MODULE LANGUAGE python SOURCES graph.i)
|
||||
SWIG_LINK_LIBRARIES(pywrapgraph ${PROJECT_NAME})
|
||||
ENDIF(BUILD_PYTHON)
|
||||
19
ortools/linear_solver/CMakeLists.txt
Normal file
19
ortools/linear_solver/CMakeLists.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_linear_solver)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS linear_solver.proto)
|
||||
|
||||
IF(BUILD_PYTHON)
|
||||
PROTOBUF_GENERATE_PYTHON(PY_PROTO_SRCS linear_solver.proto)
|
||||
ENDIF(BUILD_PYTHON)
|
||||
|
||||
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
|
||||
ALL
|
||||
DEPENDS
|
||||
${PROTO_SRCS})
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${PROTO_SRCS})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
7
ortools/linear_solver/python/CMakeLists.txt
Normal file
7
ortools/linear_solver/python/CMakeLists.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
IF(BUILD_PYTHON)
|
||||
SET_PROPERTY(SOURCE linear_solver.i PROPERTY CPLUSPLUS ON)
|
||||
SET_PROPERTY(SOURCE linear_solver.i PROPERTY SWIG_MODULE_NAME pywraplp)
|
||||
|
||||
SWIG_ADD_LIBRARY(pywraplp TYPE MODULE LANGUAGE python SOURCES linear_solver.i)
|
||||
SWIG_LINK_LIBRARIES(pywraplp ${PROJECT_NAME})
|
||||
ENDIF()
|
||||
9
ortools/lp_data/CMakeLists.txt
Normal file
9
ortools/lp_data/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_lp_data)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
17
ortools/sat/CMakeLists.txt
Normal file
17
ortools/sat/CMakeLists.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_sat)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
PROTOBUF_GENERATE_CPP(BOOL_PROTO_SRCS BOOL_PROTO_HDRS boolean_problem.proto)
|
||||
PROTOBUF_GENERATE_CPP(SAT_PROTO_SRCS SAT_PROTO_HDRS sat_parameters.proto)
|
||||
|
||||
ADD_CUSTOM_TARGET(ForceProtobufGen_${PROJECT_NAME}
|
||||
ALL
|
||||
DEPENDS
|
||||
${BOOL_PROTO_SRCS}
|
||||
${SAT_PROTO_SRCS})
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES} ${BOOL_PROTO_SRCS} ${SAT_PROTO_SRCS})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
9
ortools/util/CMakeLists.txt
Normal file
9
ortools/util/CMakeLists.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
ENABLE_LANGUAGE(CXX)
|
||||
# ENABLE_LANGUAGE(Python)
|
||||
SET(ROOT_PROJECT ${PROJECT_NAME})
|
||||
PROJECT(${PROJECT_NAME}_util)
|
||||
|
||||
FILE(GLOB ${PROJECT_NAME}_SOURCES "*.cc")
|
||||
|
||||
ADD_LIBRARY(${PROJECT_NAME} OBJECT ${${PROJECT_NAME}_SOURCES})
|
||||
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
Reference in New Issue
Block a user