Separate dependency libs into their own flags, addition of imported targets. Working *nix build
This commit is contained in:
@@ -17,13 +17,11 @@ IF(UNIX)
|
||||
ENDIF()
|
||||
|
||||
SET(BUILD_CXX ON)
|
||||
SET(DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/downloads"
|
||||
CACHE PATH "Location where external projects will be downloaded.")
|
||||
SET(DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/downloads" CACHE PATH "Location where external projects will be downloaded.")
|
||||
|
||||
MARK_AS_ADVANCED(BUILD_CXX)
|
||||
MARK_AS_ADVANCED(DOWNLOAD_LOCATION)
|
||||
|
||||
SET(${PROJECT_NAME}externalLibraries "")
|
||||
SET(${PROJECT_NAME}externalTargets "")
|
||||
|
||||
FILE(READ ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies.txt _Dependency_file)
|
||||
@@ -38,9 +36,7 @@ IF(BUILD_CXX)
|
||||
IF(NOT Protobuf_FOUND)
|
||||
MESSAGE(STATUS "Did not find system protobuff. Building as an external project")
|
||||
INCLUDE(cmake/external/protobuf.cmake)
|
||||
LIST(APPEND ${PROJECT_NAME}externalLibraries ${Protobuf_STATIC_LIBRARIES})
|
||||
ENDIF()
|
||||
LIST(APPEND ${PROJECT_NAME}externalLibraries ${Protobuf_LIBRARIES})
|
||||
INCLUDE_DIRECTORIES(${Protobuf_INCLUDE_DIRS})
|
||||
|
||||
FIND_PACKAGE(Gflags ${Gflags_VERSION} QUIET)
|
||||
@@ -48,7 +44,6 @@ IF(BUILD_CXX)
|
||||
MESSAGE(STATUS "Did not find system gflags. Building as an external project")
|
||||
INCLUDE(cmake/external/gflags.cmake)
|
||||
ENDIF()
|
||||
LIST(APPEND ${PROJECT_NAME}externalLibraries ${Gflags_LIBRARIES})
|
||||
INCLUDE_DIRECTORIES(${Gflags_INCLUDE_DIRS})
|
||||
|
||||
SET(GLOG_VERSION ${Glog_VERSION})
|
||||
@@ -59,7 +54,6 @@ IF(BUILD_CXX)
|
||||
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 ${cbc_VERSION})
|
||||
@@ -69,7 +63,6 @@ IF(BUILD_CXX)
|
||||
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})
|
||||
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fwrapv -DNDEBUG -DUSE_GLOP -DUSE_BOP -DUSE_CBC -DUSE_CLP")
|
||||
@@ -95,10 +88,12 @@ IF(BUILD_CXX)
|
||||
|
||||
LIST(APPEND SUBTARGETS "$<TARGET_OBJECTS:${PROJECT_NAME}Proto>")
|
||||
|
||||
MESSAGE(STATUS "Libraries : ${${PROJECT_NAME}externalLibraries}")
|
||||
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SUBTARGETS})
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME}
|
||||
${${PROJECT_NAME}externalLibraries}
|
||||
${Cbc_LIBRARIES}
|
||||
${Gflags_LIBRARIES}
|
||||
${Protobuf_LIBRARIES}
|
||||
${GLOG_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
ADD_DEPENDENCIES(${PROJECT_NAME} ${PROJECT_NAME}Proto)
|
||||
@@ -116,4 +111,4 @@ INSTALL(DIRECTORY ortools
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ortools
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING PATTERN "*.pb.h"
|
||||
PATTERN CMakeFiles EXCLUDE)
|
||||
PATTERN CMakeFiles EXCLUDE)
|
||||
|
||||
48
cmake/external/cbc.cmake
vendored
48
cmake/external/cbc.cmake
vendored
@@ -1,29 +1,47 @@
|
||||
SET(ADD_CXXFLAGS "-DCBC_THREAD_SAFE -DCBC_NO_INTERRUPT")
|
||||
|
||||
FOREACH(COIN_PROJECT CoinUtils Osi Clp Cgl Cbc)
|
||||
SET(${COIN_PROJECT}_URL https://github.com/coin-or/${COIN_PROJECT}.git)
|
||||
SET(${COIN_PROJECT}_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/install/include)
|
||||
|
||||
ExternalProject_Add(${COIN_PROJECT}
|
||||
ExternalProject_Add(${COIN_PROJECT}_project
|
||||
PREFIX ${COIN_PROJECT}
|
||||
GIT_REPOSITORY ${${COIN_PROJECT}_URL}
|
||||
GIT_TAG "releases/${${COIN_PROJECT}_VERSION}"
|
||||
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
||||
UPDATE_COMMAND ""
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${COIN_PROJECT}/src/${COIN_PROJECT}/configure
|
||||
--disable-bzlib --without-lapack --with-pic --enable-static --prefix=${CMAKE_CURRENT_BINARY_DIR}/install CXXFLAGS=${CMAKE_CXX_FLAGS})
|
||||
LIST(APPEND Cbc_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/install/lib/lib${COIN_PROJECT}.a)
|
||||
CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${COIN_PROJECT}/src/${COIN_PROJECT}_project/configure
|
||||
--disable-bzlib --without-lapack --with-pic --enable-static --prefix=${CMAKE_CURRENT_BINARY_DIR}/install
|
||||
ADD_CXXFLAGS=${ADD_CXXFLAGS})
|
||||
|
||||
ADD_LIBRARY(${COIN_PROJECT} STATIC IMPORTED)
|
||||
SET_PROPERTY(TARGET ${COIN_PROJECT} PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/install/lib/lib${COIN_PROJECT}.a)
|
||||
|
||||
IF (${COIN_PROJECT} STREQUAL "Cbc" OR ${COIN_PROJECT} STREQUAL "Clp")
|
||||
ADD_LIBRARY(Osi${COIN_PROJECT} STATIC IMPORTED)
|
||||
SET_PROPERTY(TARGET Osi${COIN_PROJECT} PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/install/lib/libOsi${COIN_PROJECT}.a)
|
||||
ADD_LIBRARY(${COIN_PROJECT}Solver STATIC IMPORTED)
|
||||
SET_PROPERTY(TARGET ${COIN_PROJECT}Solver PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/install/lib/lib${COIN_PROJECT}Solver.a)
|
||||
ENDIF()
|
||||
|
||||
ADD_DEPENDENCIES(${COIN_PROJECT} ${COIN_PROJECT}_project)
|
||||
ENDFOREACH()
|
||||
|
||||
# Generated by Clp
|
||||
LIST(APPEND Cbc_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/install/lib/libOsiClp.a)
|
||||
LIST(APPEND Cbc_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/install/lib/libClpSolver.a)
|
||||
ADD_DEPENDENCIES(Osi_project CoinUtils_project)
|
||||
ADD_DEPENDENCIES(Clp_project Osi_project)
|
||||
ADD_DEPENDENCIES(Cgl_project Clp_project)
|
||||
ADD_DEPENDENCIES(Cbc_project Cgl_project)
|
||||
|
||||
# Generated by Cbc
|
||||
LIST(APPEND Cbc_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/install/lib/libCbcSolver.a)
|
||||
LIST(APPEND Cbc_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/install/lib/libOsiCbc.a)
|
||||
|
||||
ADD_DEPENDENCIES(Osi CoinUtils)
|
||||
ADD_DEPENDENCIES(Clp CoinUtils Osi)
|
||||
ADD_DEPENDENCIES(Cgl CoinUtils Osi Clp)
|
||||
ADD_DEPENDENCIES(Cbc CoinUtils Osi Clp Cgl)
|
||||
SET_PROPERTY(TARGET Osi PROPERTY INTERFACE_LINK_LIBRARIES CoinUtils)
|
||||
SET_PROPERTY(TARGET Clp PROPERTY INTERFACE_LINK_LIBRARIES Osi)
|
||||
SET_PROPERTY(TARGET OsiClp PROPERTY INTERFACE_LINK_LIBRARIES Clp)
|
||||
SET_PROPERTY(TARGET ClpSolver PROPERTY INTERFACE_LINK_LIBRARIES Clp)
|
||||
SET_PROPERTY(TARGET Cgl PROPERTY INTERFACE_LINK_LIBRARIES Clp)
|
||||
SET_PROPERTY(TARGET Cbc PROPERTY INTERFACE_LINK_LIBRARIES Cgl)
|
||||
SET_PROPERTY(TARGET OsiCbc PROPERTY INTERFACE_LINK_LIBRARIES Cbc)
|
||||
SET_PROPERTY(TARGET CbcSolver PROPERTY INTERFACE_LINK_LIBRARIES Cbc)
|
||||
|
||||
LIST(APPEND ${PROJECT_NAME}externalTargets Cbc)
|
||||
SET(Cbc_LIBRARIES "")
|
||||
LIST(APPEND Cbc_LIBRARIES Cbc OsiCbc CbcSolver ClpSolver OsiClp)
|
||||
|
||||
13
cmake/external/gflags.cmake
vendored
13
cmake/external/gflags.cmake
vendored
@@ -1,14 +1,14 @@
|
||||
SET(Gflags_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/gflags/src/gflags/include/)
|
||||
SET(Gflags_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/gflags_project/src/gflags/include/)
|
||||
SET(Gflags_URL https://github.com/gflags/gflags)
|
||||
SET(Gflags_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/gflags/src/gflags/lib/libgflags.a)
|
||||
|
||||
ExternalProject_Add(Gflags
|
||||
ExternalProject_Add(Gflags_project
|
||||
PREFIX Gflags
|
||||
GIT_REPOSITORY ${Gflags_URL}
|
||||
GIT_TAG "v${Gflags_VERSION}"
|
||||
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
||||
UPDATE_COMMAND ""
|
||||
BUILD_IN_SOURCE 1
|
||||
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/gflags/src/gflags
|
||||
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/gflags_project/src/gflags
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
@@ -20,4 +20,7 @@ ExternalProject_Add(Gflags
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
|
||||
|
||||
LIST(APPEND ${PROJECT_NAME}externalTargets Gflags)
|
||||
ADD_LIBRARY(Gflags STATIC IMPORTED)
|
||||
SET_PROPERTY(TARGET Gflags PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/gflags_project/src/gflags/lib/libgflags.a)
|
||||
SET(Gflags_LIBRARIES "")
|
||||
LIST(APPEND Gflags_LIBRARIES Gflags)
|
||||
|
||||
15
cmake/external/glog.cmake
vendored
15
cmake/external/glog.cmake
vendored
@@ -1,15 +1,15 @@
|
||||
SET(GLOG_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog/)
|
||||
LIST(APPEND GLOG_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog/src/)
|
||||
SET(GLOG_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/glog_project/src/glog/)
|
||||
LIST(APPEND GLOG_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/glog_project/src/glog/src/)
|
||||
SET(GLOG_URL https://github.com/google/glog)
|
||||
SET(GLOG_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog/libglog.a)
|
||||
|
||||
ExternalProject_Add(Glog
|
||||
ExternalProject_Add(Glog_project
|
||||
PREFIX Glog
|
||||
GIT_REPOSITORY ${GLOG_URL}
|
||||
GIT_TAG "v${GLOG_VERSION}"
|
||||
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
||||
UPDATE_COMMAND ""
|
||||
BUILD_IN_SOURCE 1
|
||||
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/glog/src/glog
|
||||
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/glog_project/src/glog
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND}
|
||||
-DBUILD_TESTING=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
@@ -20,4 +20,7 @@ ExternalProject_Add(Glog
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
|
||||
|
||||
LIST(APPEND ${PROJECT_NAME}externalTargets Glog)
|
||||
ADD_LIBRARY(GLOG STATIC IMPORTED)
|
||||
SET_PROPERTY(TARGET GLOG PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/glog_project/src/glog/libglog.a)
|
||||
SET(GLOG_LIBRARIES "")
|
||||
LIST(APPEND GLOG_LIBRARIES GLOG)
|
||||
|
||||
17
cmake/external/protobuf.cmake
vendored
17
cmake/external/protobuf.cmake
vendored
@@ -1,18 +1,16 @@
|
||||
FIND_PACKAGE(ZLIB REQUIRED)
|
||||
|
||||
SET(Protobuf_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/src)
|
||||
SET(Protobuf_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/protobuf_project/src/protobuf/src)
|
||||
SET(Protobuf_URL https://github.com/google/protobuf)
|
||||
SET(Protobuf_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/libprotobuf.a)
|
||||
LIST(APPEND Protobuf_LIBRARIES ${ZLIB_LIBRARIES})
|
||||
SET(Protobuf_PROTOC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf/protoc)
|
||||
|
||||
ExternalProject_Add(Protobuf
|
||||
ExternalProject_Add(Protobuf_project
|
||||
PREFIX Protobuf
|
||||
GIT_REPOSITORY ${Protobuf_URL}
|
||||
GIT_TAG "v${Protobuf_VERSION}"
|
||||
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
||||
UPDATE_COMMAND ""
|
||||
BUILD_IN_SOURCE 1
|
||||
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/protobuf/src/protobuf
|
||||
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/protobuf_project/src/protobuf
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} cmake/
|
||||
-Dprotobuf_BUILD_TESTS=OFF
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
@@ -24,4 +22,9 @@ ExternalProject_Add(Protobuf
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON)
|
||||
|
||||
LIST(APPEND ${PROJECT_NAME}externalTargets Protobuf)
|
||||
ADD_LIBRARY(Protobuf STATIC IMPORTED)
|
||||
SET_PROPERTY(TARGET Protobuf PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/protobuf_project/src/protobuf/libprotobuf.a)
|
||||
SET(Protobuf_LIBRARIES "")
|
||||
LIST(APPEND Protobuf_LIBRARIES Protobuf ${ZLIB_LIBRARIES})
|
||||
|
||||
SET(Protobuf_PROTOC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/protobuf_project/src/protobuf/protoc)
|
||||
|
||||
Reference in New Issue
Block a user