CMake: Coin-OR is optional
This commit is contained in:
@@ -70,35 +70,48 @@ CMAKE_DEPENDENT_OPTION(BUILD_gflags "Build the gflags dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_glog "Build the glog dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Protobuf "Build the Protobuf dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_CoinUtils "Build the CoinUtils dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Osi "Build the Osi dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Clp "Build the Clp dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Cgl "Build the Cgl dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Cbc "Build the Cbc dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
|
||||
message(STATUS "Build ZLIB: ${BUILD_ZLIB}")
|
||||
message(STATUS "Build abseil-cpp: ${BUILD_absl}")
|
||||
message(STATUS "Build gflags: ${BUILD_gflags}")
|
||||
message(STATUS "Build glog: ${BUILD_glog}")
|
||||
message(STATUS "Build protobuf: ${BUILD_Protobuf}")
|
||||
message(STATUS "Build CoinUtils: ${BUILD_CoinUtils}")
|
||||
message(STATUS "Build Osi: ${BUILD_Osi}")
|
||||
message(STATUS "Build Clp: ${BUILD_Clp}")
|
||||
message(STATUS "Build Cgl: ${BUILD_Cgl}")
|
||||
message(STATUS "Build Cbc: ${BUILD_Cbc}")
|
||||
|
||||
# Optional third party solvers (enabled by default)
|
||||
option(USE_COINOR "Use the COIN-OR solver" ON)
|
||||
message(STATUS "COIN-OR support: ${USE_COINOR}")
|
||||
|
||||
if(USE_COINOR)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_CoinUtils "Build the CoinUtils dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build CoinUtils: ${BUILD_CoinUtils}")
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Osi "Build the Osi dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build Osi: ${BUILD_Osi}")
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Clp "Build the Clp dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build Clp: ${BUILD_Clp}")
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Cgl "Build the Cgl dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build Cgl: ${BUILD_Cgl}")
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Cbc "Build the Cbc dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build Cbc: ${BUILD_Cbc}")
|
||||
endif()
|
||||
|
||||
# Optional third party solvers (disabled by default)
|
||||
option(USE_CPLEX "Use the CPLEX solver" OFF)
|
||||
message(STATUS "CPLEX support: ${USE_CPLEX}")
|
||||
|
||||
option(USE_SCIP "Use the SCIP solver" OFF)
|
||||
message(STATUS "SCIP support: ${USE_SCIP}")
|
||||
|
||||
option(USE_XPRESS "Use the XPRESS solver" OFF)
|
||||
message(STATUS "XPRESS support: ${USE_XPRESS}")
|
||||
|
||||
|
||||
@@ -46,34 +46,38 @@ else()
|
||||
find_package(Protobuf REQUIRED)
|
||||
endif()
|
||||
|
||||
if(BUILD_CoinUtils)
|
||||
find_package(CoinUtils REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(CoinUtils REQUIRED)
|
||||
endif()
|
||||
if(USE_COINOR)
|
||||
if(BUILD_CoinUtils)
|
||||
find_package(CoinUtils REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(CoinUtils REQUIRED)
|
||||
endif()
|
||||
|
||||
if(BUILD_Osi)
|
||||
find_package(Osi REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Osi REQUIRED)
|
||||
endif()
|
||||
if(BUILD_Osi)
|
||||
find_package(Osi REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Osi REQUIRED)
|
||||
endif()
|
||||
|
||||
if(BUILD_Clp)
|
||||
find_package(Clp REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Clp REQUIRED)
|
||||
endif()
|
||||
if(BUILD_Clp)
|
||||
find_package(Clp REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Clp REQUIRED)
|
||||
endif()
|
||||
|
||||
if(BUILD_Cgl)
|
||||
find_package(Cgl REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Cgl REQUIRED)
|
||||
endif()
|
||||
if(BUILD_Cgl)
|
||||
find_package(Cgl REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Cgl REQUIRED)
|
||||
endif()
|
||||
|
||||
if(BUILD_Cbc)
|
||||
find_package(Cbc REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Cbc REQUIRED)
|
||||
if(BUILD_Cbc)
|
||||
find_package(Cbc REQUIRED CONFIG)
|
||||
else()
|
||||
find_package(Cbc REQUIRED)
|
||||
endif()
|
||||
|
||||
set(COINOR_DEPS Coin::CbcSolver Coin::OsiCbc Coin::ClpSolver Coin::OsiClp)
|
||||
endif()
|
||||
|
||||
# Check optional Dependencies
|
||||
@@ -100,9 +104,13 @@ add_library(${PROJECT_NAME} "")
|
||||
list(APPEND OR_TOOLS_COMPILE_DEFINITIONS
|
||||
"USE_BOP" # enable BOP support
|
||||
"USE_GLOP" # enable GLOP support
|
||||
"USE_CBC" # enable COIN-OR CBC support
|
||||
"USE_CLP" # enable COIN-OR CLP support
|
||||
)
|
||||
if(USE_COINOR)
|
||||
list(APPEND OR_TOOLS_COMPILE_DEFINITIONS
|
||||
"USE_CBC" # enable COIN-OR CBC support
|
||||
"USE_CLP" # enable COIN-OR CLP support
|
||||
)
|
||||
endif()
|
||||
if(USE_CPLEX)
|
||||
list(APPEND OR_TOOLS_COMPILE_DEFINITIONS "USE_CPLEX")
|
||||
endif()
|
||||
@@ -214,7 +222,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC
|
||||
${GFLAGS_DEP}
|
||||
glog::glog
|
||||
protobuf::libprotobuf
|
||||
Coin::CbcSolver Coin::OsiCbc Coin::ClpSolver Coin::OsiClp
|
||||
${COINOR_DEPS}
|
||||
Threads::Threads)
|
||||
if(WIN32)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC psapi.lib ws2_32.lib)
|
||||
|
||||
@@ -28,7 +28,7 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::hash,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -39,7 +39,7 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -51,13 +51,17 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::hash absl::meta absl::memory absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Coin::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
|
||||
if(USE_COINOR)
|
||||
add_dependencies(${NAME} Coin::Cbc)
|
||||
endif()
|
||||
|
||||
add_library(${PROJECT_NAME}::graph ALIAS ${NAME})
|
||||
|
||||
@@ -27,7 +27,7 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::memory,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -37,7 +37,7 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -48,16 +48,18 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::memory absl::container absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Coin::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
add_library(${PROJECT_NAME}::linear_solver ALIAS ${NAME})
|
||||
|
||||
if(USE_COINOR)
|
||||
add_dependencies(${NAME} Coin::Cbc)
|
||||
endif()
|
||||
|
||||
if (USE_XPRESS)
|
||||
target_include_directories(${NAME} PUBLIC ${XPRESSDIR}/include)
|
||||
@@ -77,4 +79,6 @@ if (USE_CPLEX)
|
||||
elseif(MSVC)
|
||||
target_link_libraries(${NAME} PUBLIC ${CPLEXDIR}/lib/x64_windows_vs2015/stat_mda/cplex1270.lib)
|
||||
endif()
|
||||
endif(USE_CPLEX)
|
||||
endif(USE_CPLEX)
|
||||
|
||||
add_library(${PROJECT_NAME}::linear_solver ALIAS ${NAME})
|
||||
|
||||
@@ -29,7 +29,7 @@ target_include_directories(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_INCLUDE_DIRECTORIES>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:absl::any,INTERFACE_COMPILE_OPTIONS>
|
||||
@@ -41,7 +41,7 @@ target_compile_options(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_OPTIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_OPTIONS>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_OPTIONS>
|
||||
)
|
||||
target_compile_definitions(${NAME} PRIVATE
|
||||
@@ -54,13 +54,17 @@ target_compile_definitions(${NAME} PRIVATE
|
||||
$<TARGET_PROPERTY:gflags::gflags,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:glog::glog,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>
|
||||
$<$<BOOL:${USE_COINOR}>:$<TARGET_PROPERTY:Coin::Cbc,INTERFACE_COMPILE_DEFINITIONS>,>
|
||||
$<TARGET_PROPERTY:${PROJECT_NAME}::proto,INTERFACE_COMPILE_DEFINITIONS>
|
||||
)
|
||||
add_dependencies(${NAME}
|
||||
absl::any absl::memory absl::synchronization absl::container absl::strings absl::str_format
|
||||
gflags::gflags glog::glog
|
||||
protobuf::libprotobuf
|
||||
Coin::Cbc
|
||||
${PROJECT_NAME}::proto)
|
||||
|
||||
if(USE_COINOR)
|
||||
add_dependencies(${NAME} Coin::Cbc)
|
||||
endif()
|
||||
|
||||
add_library(${PROJECT_NAME}::sat ALIAS ${NAME})
|
||||
|
||||
Reference in New Issue
Block a user