83 lines
2.7 KiB
CMake
83 lines
2.7 KiB
CMake
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
|
|
FIND_PACKAGE(gflags ${gflags_VERSION})
|
|
IF(NOT gflags_FOUND)
|
|
MESSAGE(STATUS "Did not find system gflags. Building as an external project")
|
|
INCLUDE(external/gflags.cmake)
|
|
ENDIF()
|
|
INCLUDE_DIRECTORIES(${gflags_INCLUDE_DIRS})
|
|
|
|
FIND_PACKAGE(glog ${glog_VERSION})
|
|
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})
|
|
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)
|
|
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)
|
|
|
|
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)
|