INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}) FIND_PACKAGE(gflags ${gflags_VERSION}) IF(BUILD_DEPS) SET(gflags_FOUND False) ENDIF() IF(NOT gflags_FOUND) MESSAGE(STATUS "Did not find system gflags or forced build. Building as an external project") INCLUDE(cmake/external/gflags.cmake) ENDIF() INCLUDE_DIRECTORIES(${gflags_INCLUDE_DIRS}) FIND_PACKAGE(glog ${glog_VERSION}) IF(BUILD_DEPS) SET(glog_FOUND False) ENDIF() 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(BUILD_DEPS) SET(Cbc_FOUND False) ENDIF() 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) ADD_SUBDIRECTORY(examples/cpp) 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}) INSTALL(DIRECTORY ortools DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Devel FILES_MATCHING PATTERN "*.h") INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ortools 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)