2017-06-28 15:45:56 +05:30
|
|
|
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
|
|
|
|
|
FIND_PACKAGE(gflags ${gflags_VERSION})
|
2017-07-03 15:42:24 +05:30
|
|
|
IF(BUILD_DEPS)
|
|
|
|
|
SET(gflags_FOUND False)
|
|
|
|
|
ENDIF()
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(NOT gflags_FOUND)
|
2017-07-03 15:42:24 +05:30
|
|
|
MESSAGE(STATUS "Did not find system gflags or forced build. Building as an external project")
|
|
|
|
|
INCLUDE(cmake/external/gflags.cmake)
|
2017-06-28 15:45:56 +05:30
|
|
|
ENDIF()
|
|
|
|
|
INCLUDE_DIRECTORIES(${gflags_INCLUDE_DIRS})
|
|
|
|
|
|
|
|
|
|
FIND_PACKAGE(glog ${glog_VERSION})
|
2017-07-03 15:42:24 +05:30
|
|
|
IF(BUILD_DEPS)
|
|
|
|
|
SET(glog_FOUND False)
|
|
|
|
|
ENDIF()
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(NOT glog_FOUND)
|
|
|
|
|
MESSAGE(STATUS "Did not find system glog. Building as an external project.")
|
|
|
|
|
INCLUDE(cmake/external/glog.cmake)
|
|
|
|
|
ENDIF()
|
|
|
|
|
INCLUDE_DIRECTORIES(${glog_INCLUDE_DIRS})
|
|
|
|
|
|
|
|
|
|
FIND_PACKAGE(Cbc ${Cbc_VERSION})
|
2017-07-03 15:42:24 +05:30
|
|
|
IF(BUILD_DEPS)
|
|
|
|
|
SET(Cbc_FOUND False)
|
|
|
|
|
ENDIF()
|
2017-06-28 15:45:56 +05:30
|
|
|
IF(NOT Cbc_FOUND)
|
|
|
|
|
IF(NOT MSVC)
|
|
|
|
|
MESSAGE(STATUS "Did not find system coin-cbc. Building as an external project.")
|
|
|
|
|
INCLUDE(cmake/external/cbc.cmake)
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_CLP -DUSE_CBC")
|
|
|
|
|
INCLUDE_DIRECTORIES(${Cbc_INCLUDE_DIRS})
|
|
|
|
|
ENDIF()
|
|
|
|
|
ELSE()
|
|
|
|
|
INCLUDE_DIRECTORIES(${Cbc_INCLUDE_DIRS})
|
|
|
|
|
IF(MSVC)
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DUSE_CLP /DUSE_CBC")
|
|
|
|
|
ELSE()
|
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_CLP -DUSE_CBC")
|
|
|
|
|
ENDIF()
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
|
|
FILE(GLOB_RECURSE proto_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "ortools/*.proto")
|
|
|
|
|
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${proto_files})
|
|
|
|
|
ADD_CUSTOM_TARGET(${PROJECT_NAME}ProtoSources ALL DEPENDS ${PROTO_SRCS})
|
|
|
|
|
ADD_LIBRARY(${PROJECT_NAME}Proto OBJECT ${PROTO_SRCS} ${PROTO_HDRS})
|
|
|
|
|
|
|
|
|
|
IF(NOT Cbc_FOUND)
|
|
|
|
|
IF(NOT MSVC)
|
|
|
|
|
ADD_DEPENDENCIES(${PROJECT_NAME}Proto Cbc)
|
|
|
|
|
ENDIF()
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
|
|
IF(NOT glog_FOUND)
|
|
|
|
|
ADD_DEPENDENCIES(${PROJECT_NAME}Proto glog)
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
|
|
SET_TARGET_PROPERTIES(${PROJECT_NAME}Proto PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
|
|
|
|
|
LIST(APPEND SUBTARGETS "$<TARGET_OBJECTS:${PROJECT_NAME}Proto>")
|
|
|
|
|
|
|
|
|
|
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SUBTARGETS})
|
|
|
|
|
TARGET_LINK_LIBRARIES(${PROJECT_NAME}
|
|
|
|
|
${Cbc_LIBRARIES}
|
|
|
|
|
${gflags_LIBRARIES}
|
|
|
|
|
${Protobuf_LIBRARIES}
|
|
|
|
|
${glog_LIBRARIES}
|
|
|
|
|
${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
|
|
|
|
|
|
ADD_DEPENDENCIES(${PROJECT_NAME} ${PROJECT_NAME}Proto)
|
|
|
|
|
ADD_SUBDIRECTORY(examples/cpp)
|
|
|
|
|
|
2017-07-03 15:21:31 +05:30
|
|
|
GENERATE_EXPORT_HEADER(${PROJECT_NAME})
|
|
|
|
|
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY VERSION ${PROJECT_VERSION})
|
|
|
|
|
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY SOVERSION ${PROJECT_VERSION_MAJOR})
|
|
|
|
|
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY INTERFACE_${PROJECT_NAME}_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
|
|
|
|
|
SET_PROPERTY(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION)
|
|
|
|
|
|
|
|
|
|
INSTALL(TARGETS ${PROJECT_NAME}
|
|
|
|
|
EXPORT ${PROJECT_NAME}Targets
|
|
|
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
|
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
2017-06-28 15:45:56 +05:30
|
|
|
INSTALL(DIRECTORY ortools
|
2017-07-03 15:21:31 +05:30
|
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
|
|
|
COMPONENT Devel
|
|
|
|
|
FILES_MATCHING PATTERN "*.h")
|
2017-06-28 15:45:56 +05:30
|
|
|
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ortools
|
2017-07-03 15:21:31 +05:30
|
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
|
|
|
COMPONENT Devel
|
|
|
|
|
FILES_MATCHING PATTERN "*.pb.h"
|
|
|
|
|
PATTERN CMakeFiles EXCLUDE)
|
|
|
|
|
|
|
|
|
|
WRITE_BASIC_PACKAGE_VERSION_FILE("${CMAKE_CURRENT_BINARY_DIR}/ortools/${PROJECT_NAME}ConfigVersion.cmake"
|
|
|
|
|
VERSION ${PROJECT_VERSION}
|
|
|
|
|
COMPATIBILITY AnyNewerVersion)
|
|
|
|
|
EXPORT(EXPORT ${PROJECT_NAME}Targets
|
|
|
|
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/ortools/${PROJECT_NAME}Targets.cmake"
|
|
|
|
|
NAMESPACE ${PROJECT_NAME}::)
|
|
|
|
|
CONFIGURE_FILE(cmake/${PROJECT_NAME}Config.cmake.in
|
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ortools/${PROJECT_NAME}Config.cmake"
|
|
|
|
|
@ONLY)
|
|
|
|
|
|
|
|
|
|
SET(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
|
|
|
|
INSTALL(EXPORT ${PROJECT_NAME}Targets
|
|
|
|
|
FILE ${PROJECT_NAME}Targets.cmake
|
|
|
|
|
NAMESPACE ${PROJECT_NAME}::
|
|
|
|
|
DESTINATION ${ConfigPackageLocation})
|
|
|
|
|
INSTALL(FILES
|
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ortools/${PROJECT_NAME}Config.cmake"
|
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/ortools/${PROJECT_NAME}ConfigVersion.cmake"
|
|
|
|
|
DESTINATION ${ConfigPackageLocation}
|
|
|
|
|
COMPONENT Devel)
|