Added cbc with fallback to locally compiled
This commit is contained in:
@@ -16,7 +16,6 @@ IF(UNIX)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fwrapv -DNDEBUG -DUSE_GLOP -DUSE_BOP")
|
||||
SET(BUILD_CXX ON)
|
||||
SET(DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/downloads"
|
||||
CACHE PATH "Location where external projects will be downloaded.")
|
||||
@@ -58,22 +57,23 @@ IF(BUILD_CXX)
|
||||
SET(GLOG_VERSION 0.3.5)
|
||||
|
||||
IF(NOT GLOG_FOUND)
|
||||
MESSAGE(STATUS "Did not find system glog. Building as an external project ${GLOG_VERSION}")
|
||||
MESSAGE(STATUS "Did not find system glog. Building as an external project.")
|
||||
INCLUDE(cmake/external/glog.cmake)
|
||||
ENDIF()
|
||||
LIST(APPEND ${PROJECT_NAME}externalLibraries ${GLOG_LIBRARIES})
|
||||
INCLUDE_DIRECTORIES(${GLOG_INCLUDE_DIRS})
|
||||
|
||||
SET(CBC_VERSION 2.9.8)
|
||||
PKG_CHECK_MODULES(CBC cbc)
|
||||
IF(CBC_FOUND)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CBC_CFLAGS} -DUSE_CBC")
|
||||
ENDIF(CBC_FOUND)
|
||||
SET(Cbc_VERSION 2.9.8)
|
||||
PKG_CHECK_MODULES(Cbc cbc)
|
||||
SET(Cbc_VERSION 2.9.8)
|
||||
IF(NOT Cbc_FOUND)
|
||||
MESSAGE(STATUS "Did not find system coin-cbc. Building as an external Project.")
|
||||
INCLUDE(cmake/external/cbc.cmake)
|
||||
ENDIF()
|
||||
LIST(APPEND ${PROJECT_NAME}externalLibraries ${Cbc_LIBRARIES})
|
||||
INCLUDE_DIRECTORIES(${Cbc_INCLUDE_DIRS})
|
||||
|
||||
PKG_CHECK_MODULES(CLP clp)
|
||||
IF(CLP_FOUND)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLP_CFLAGS} -DUSE_CLP")
|
||||
ENDIF(CLP_FOUND)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fwrapv -DNDEBUG -DUSE_GLOP -DUSE_BOP -DUSE_CBC")
|
||||
|
||||
FILE(GLOB_RECURSE proto_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "ortools/*.proto")
|
||||
SET(PROTOBUF_GENERATE_CPP_APPEND_PATH OFF)
|
||||
@@ -100,7 +100,6 @@ IF(BUILD_CXX)
|
||||
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SUBTARGETS})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME}
|
||||
${${PROJECT_NAME}externalLibraries}
|
||||
${CBC_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
ADD_DEPENDENCIES(${PROJECT_NAME} ${PROJECT_NAME}Proto)
|
||||
|
||||
61
cmake/external/cbc.cmake
vendored
61
cmake/external/cbc.cmake
vendored
@@ -1,27 +1,40 @@
|
||||
SET(CBC_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/src)
|
||||
SET(CBC_URL https://github.com/google/protobuf)
|
||||
SET(CoinUtils_VERSION 2.10.13)
|
||||
SET(Osi_VERSION 0.107.8)
|
||||
SET(Clp_VERSION 1.16.10)
|
||||
SET(Cgl_VERSION 0.59.9)
|
||||
|
||||
IF(WIN32)
|
||||
SET(CBC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/${CMAKE_BUILD_TYPE}/libcbc.lib)
|
||||
ELSE()
|
||||
SET(CBC_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/libprotobuf.a)
|
||||
ENDIF()
|
||||
SET(CoinUtils_URL https://github.com/coin-or/CoinUtils.git)
|
||||
SET(Osi_URL https://github.com/coin-or/Osi.git)
|
||||
SET(Clp_URL https://github.com/coin-or/Clp.git)
|
||||
SET(Cgl_URL https://github.com/coin-or/Cgl.git)
|
||||
SET(Cbc_URL https://github.com/coin-or/Cbc.git)
|
||||
|
||||
ExternalProject_Add(Cbc
|
||||
PREFIX Cbc
|
||||
GIT_REPOSITORY ${CBC_URL}
|
||||
GIT_TAG "v${CBC_VERSION}"
|
||||
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
||||
BUILD_IN_SOURCE 1
|
||||
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} cmake/
|
||||
-Dprotobuf_BUILD_TESTS=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
${Protobuf_ADDITIONAL_CMAKE_OPTIONS}
|
||||
INSTALL_COMMAND ""
|
||||
CMAKE_CACHE_ARGS
|
||||
-DCMAKE_BUILD_TYPE:STRING=Release
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
|
||||
FOREACH(COIN_PROJECT CoinUtils Osi Clp Cgl Cbc)
|
||||
IF(WIN32)
|
||||
SET(${COIN_PROJECT}_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/install/lib/lib${COIN_PROJECT}.lib)
|
||||
SET(${COIN_PROJECT}_ADDITIONAL_CMAKE_OPTIONS --enable-msvc)
|
||||
ELSE()
|
||||
SET(${COIN_PROJECT}_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/install/lib/lib${COIN_PROJECT}.a)
|
||||
ENDIF()
|
||||
|
||||
LIST(APPEND ${PROJECT_NAME}externalTargets Protobuf)
|
||||
SET(${COIN_PROJECT}_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/install/include)
|
||||
|
||||
ExternalProject_Add(${COIN_PROJECT}
|
||||
PREFIX ${COIN_PROJECT}
|
||||
GIT_REPOSITORY ${${COIN_PROJECT}_URL}
|
||||
GIT_TAG "releases/${${COIN_PROJECT}_VERSION}"
|
||||
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${COIN_PROJECT}/src/${COIN_PROJECT}/configure --enable-static --prefix=${CMAKE_CURRENT_BINARY_DIR}/install CXXFLAGS=${CMAKE_CXX_FLAGS})
|
||||
ENDFOREACH()
|
||||
|
||||
FOREACH(COIN_PROJECT CoinUtils Osi Clp Cgl)
|
||||
LIST(APPEND Cbc_LIBRARIES ${${COIN_PROJECT}_LIBRARIES})
|
||||
ENDFOREACH()
|
||||
|
||||
ADD_DEPENDENCIES(Osi CoinUtils)
|
||||
ADD_DEPENDENCIES(Clp CoinUtils Osi)
|
||||
ADD_DEPENDENCIES(Cgl CoinUtils Osi Clp)
|
||||
ADD_DEPENDENCIES(Cbc CoinUtils Osi Clp Cgl)
|
||||
|
||||
LIST(APPEND ${PROJECT_NAME}externalTargets Cbc)
|
||||
Reference in New Issue
Block a user