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 "$") ENDFOREACH() LIST(APPEND SUBTARGETS "$") 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)