1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
# modeled after FindCOIN.cmake in the lemon project
# Written by: Xavier Warin
# Last updated: 02/12/2015
# This cmake file is designed to locate coin-related
# dependencies on a filesystem.
#
# If the coin dependencies were installed in a non-standard
# directory, e.g. installed from source perhaps, then
# the user can provide a prefix hint via the CLPOSI_ROOT_DIR
# cmake variable:
# $> cmake ../src -DCLPOSI_ROOT_DIR=/path/to/coin/root
# To date, this install requires the following dev versions
# of the respective coin libraries:
## * coinor-libClp-dev
# * coinor-libcoinutils-dev
# * coinor-libOsi-dev
#
# Get the root directory hint if provided
#
IF(NOT DEFINED COIN_ROOT_DIR)
SET(COIN_ROOT_DIR "$ENV{COIN_ROOT_DIR}")
MESSAGE("\tCOIN Root Dir: ${COIN_INCLUDE_DIR}")
ENDIF(NOT DEFINED COIN_ROOT_DIR)
MESSAGE(STATUS "COIN_ROOT_DIR hint is : ${COIN_ROOT_DIR}")
#
# Find the path based on a required header file
#
MESSAGE(STATUS "Coin CLP multiple library dependency status:")
FIND_PATH(COIN_CLP_INCLUDE_DIR coin/ClpModel.hpp coin-or/ClpModel.hpp
HINTS "${COIN_CLP_INCLUDE_DIR}"
HINTS "${COIN_ROOT_DIR}/include"
HINTS /usr/
HINTS /usr/include/
HINTS /usr/local/
HINTS /usr/local/include/
HINTS /usr/coin/
HINTS /usr/local/coin/
)
IF (WIN32)
set(COIN_CLP_INCLUDE_DIR ${COIN_CLP_INCLUDE_DIR}/coin-or)
ELSE()
set(COIN_CLP_INCLUDE_DIR ${COIN_CLP_INCLUDE_DIR}/coin)
ENDIF()
MESSAGE("\tCLP Include Dir: ${COIN_CLP_INCLUDE_DIR}")
MESSAGE(STATUS "Coin UTILS multiple library dependency status:")
FIND_PATH(COIN_UTILS_INCLUDE_DIR coin/CoinModel.hpp coin-or/CoinModel.hpp
HINTS "${COIN_UTILS_INCLUDE_DIR}"
HINTS "${COIN_ROOT_DIR}/include"
HINTS /usr/
HINTS /usr/include/
HINTS /usr/local/
HINTS /usr/local/include/
HINTS /usr/coin/
HINTS /usr/local/coin/
)
IF (WIN32)
set(COIN_UTILS_INCLUDE_DIR ${COIN_UTILS_INCLUDE_DIR}/coin-or)
ELSE()
set(COIN_UTILS_INCLUDE_DIR ${COIN_UTILS_INCLUDE_DIR}/coin)
ENDIF()
MESSAGE("\tUTILS Include Dir: ${COIN_UTILS_INCLUDE_DIR}")
MESSAGE(STATUS "Coin OSI multiple library dependency status:")
FIND_PATH(COIN_OSI_INCLUDE_DIR coin/OsiCuts.hpp coin-or/OsiCuts.hpp
HINTS "${COIN_OSI_INCLUDE_DIR}"
HINTS "${COIN_ROOT_DIR}/include"
HINTS /usr/
HINTS /usr/include/
HINTS /usr/local/
HINTS /usr/local/include/
HINTS /usr/coin/
HINTS /usr/local/coin/
)
IF (WIN32)
set(COIN_OSI_INCLUDE_DIR ${COIN_OSI_INCLUDE_DIR}/coin-or)
ELSE()
set(COIN_OSI_INCLUDE_DIR ${COIN_OSI_INCLUDE_DIR}/coin)
ENDIF()
MESSAGE("\tOSI Include Dir: ${COIN_OSI_INCLUDE_DIR}")
#
# Find all coin library dependencies
#
FIND_LIBRARY(COIN_CLP_LIBRARY
NAMES Clp libClp #libClp.so.0
HINTS ${COIN_CLP_INCLUDE_DIR}/../../lib/
HINTS "${COIN_ROOT_DIR}/lib"
)
MESSAGE("\tCOIN CLP: ${COIN_CLP_LIBRARY}")
FIND_LIBRARY(COIN_UTILS_LIBRARY
NAMES CoinUtils libCoinUtils #libCoinUtils.so.0
HINTS ${COIN_UTILS_INCLUDE_DIR}/../../lib/
HINTS "${COIN_ROOT_DIR}/lib"
)
MESSAGE("\tCOIN UTILS: ${COIN_UTILS_LIBRARY}")
FIND_LIBRARY(COIN_OSI_LIBRARY
NAMES Osi libOsi #libOsiClp.so.0
HINTS ${COIN_OSI_INCLUDE_DIR}/../../lib/
HINTS "${COIN_ROOT_DIR}/lib"
)
MESSAGE("\tCOIN OSI CLP: ${COIN_OSI_LIBRARY}")
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(COIN DEFAULT_MSG
COIN_CLP_INCLUDE_DIR
COIN_UTILS_INCLUDE_DIR
COIN_OSI_INCLUDE_DIR
COIN_CLP_LIBRARY
COIN_OSI_LIBRARY
COIN_UTILS_LIBRARY
)
#
# Set all required cmake variables based on our findings
#
IF(COIN_FOUND)
SET(COIN_INCLUDE_DIRS "${COIN_CLP_INCLUDE_DIR};${COIN_UTILS_INCLUDE_DIR};${COIN_OSI_INCLUDE_DIR}")
SET(COIN_LIBRARIES "${COIN_UTILS_LIBRARY};${COIN_CLP_LIBRARY};${COIN_OSI_LIBRARY}")
ENDIF(COIN_FOUND)
#
# Report a synopsis of our findings
#
IF(COIN_INCLUDE_DIRS)
MESSAGE(STATUS "Found COIN Include Dirs: ${COIN_INCLUDE_DIRS}")
MESSAGE(STATUS "Found COIN libs : ${COIN_LIBRARIES}")
ELSE(COIN_INCLUDE_DIRS)
MESSAGE(STATUS "COIN Include Dirs NOT FOUND")
ENDIF(COIN_INCLUDE_DIRS)
|