cmake/FindCOIN.cmake
author Peter Kovacs <kpeter@inf.elte.hu>
Tue, 15 Mar 2011 19:32:21 +0100
changeset 1047 ddd3c0d3d9bf
parent 674 20dac2104519
child 1062 1f1328691a07
permissions -rw-r--r--
Implement the scaling Price Refinement heuristic in CostScaling (#417)
instead of Early Termination.

These two heuristics are similar, but the newer one is faster
and not only makes it possible to skip some epsilon phases, but
it can improve the performance of the other phases, as well.
     1 SET(COIN_ROOT_DIR "" CACHE PATH "COIN root directory")
     2 
     3 FIND_PATH(COIN_INCLUDE_DIR coin/CoinUtilsConfig.h
     4   HINTS ${COIN_ROOT_DIR}/include
     5 )
     6 FIND_LIBRARY(COIN_CBC_LIBRARY
     7   NAMES Cbc libCbc
     8   HINTS ${COIN_ROOT_DIR}/lib
     9 )
    10 FIND_LIBRARY(COIN_CBC_SOLVER_LIBRARY
    11   NAMES CbcSolver libCbcSolver
    12   HINTS ${COIN_ROOT_DIR}/lib
    13 )
    14 FIND_LIBRARY(COIN_CGL_LIBRARY
    15   NAMES Cgl libCgl
    16   HINTS ${COIN_ROOT_DIR}/lib
    17 )
    18 FIND_LIBRARY(COIN_CLP_LIBRARY
    19   NAMES Clp libClp
    20   HINTS ${COIN_ROOT_DIR}/lib
    21 )
    22 FIND_LIBRARY(COIN_COIN_UTILS_LIBRARY
    23   NAMES CoinUtils libCoinUtils
    24   HINTS ${COIN_ROOT_DIR}/lib
    25 )
    26 FIND_LIBRARY(COIN_OSI_LIBRARY
    27   NAMES Osi libOsi
    28   HINTS ${COIN_ROOT_DIR}/lib
    29 )
    30 FIND_LIBRARY(COIN_OSI_CBC_LIBRARY
    31   NAMES OsiCbc libOsiCbc
    32   HINTS ${COIN_ROOT_DIR}/lib
    33 )
    34 FIND_LIBRARY(COIN_OSI_CLP_LIBRARY
    35   NAMES OsiClp libOsiClp
    36   HINTS ${COIN_ROOT_DIR}/lib
    37 )
    38 FIND_LIBRARY(COIN_OSI_VOL_LIBRARY
    39   NAMES OsiVol libOsiVol
    40   HINTS ${COIN_ROOT_DIR}/lib
    41 )
    42 FIND_LIBRARY(COIN_VOL_LIBRARY
    43   NAMES Vol libVol
    44   HINTS ${COIN_ROOT_DIR}/lib
    45 )
    46 
    47 INCLUDE(FindPackageHandleStandardArgs)
    48 FIND_PACKAGE_HANDLE_STANDARD_ARGS(COIN DEFAULT_MSG
    49   COIN_INCLUDE_DIR
    50   COIN_CBC_LIBRARY
    51   COIN_CBC_SOLVER_LIBRARY
    52   COIN_CGL_LIBRARY
    53   COIN_CLP_LIBRARY
    54   COIN_COIN_UTILS_LIBRARY
    55   COIN_OSI_LIBRARY
    56   COIN_OSI_CBC_LIBRARY
    57   COIN_OSI_CLP_LIBRARY
    58   COIN_OSI_VOL_LIBRARY
    59   COIN_VOL_LIBRARY
    60 )
    61 
    62 IF(COIN_FOUND)
    63   SET(COIN_INCLUDE_DIRS ${COIN_INCLUDE_DIR})
    64   SET(COIN_LIBRARIES "${COIN_CBC_LIBRARY};${COIN_CBC_SOLVER_LIBRARY};${COIN_CGL_LIBRARY};${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY};${COIN_OSI_LIBRARY};${COIN_OSI_CBC_LIBRARY};${COIN_OSI_CLP_LIBRARY};${COIN_OSI_VOL_LIBRARY};${COIN_VOL_LIBRARY}")
    65   SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY}")
    66   SET(COIN_CBC_LIBRARIES ${COIN_LIBRARIES})
    67 ENDIF(COIN_FOUND)
    68 
    69 MARK_AS_ADVANCED(
    70   COIN_INCLUDE_DIR
    71   COIN_CBC_LIBRARY
    72   COIN_CBC_SOLVER_LIBRARY
    73   COIN_CGL_LIBRARY
    74   COIN_CLP_LIBRARY
    75   COIN_COIN_UTILS_LIBRARY
    76   COIN_OSI_LIBRARY
    77   COIN_OSI_CBC_LIBRARY
    78   COIN_OSI_CLP_LIBRARY
    79   COIN_OSI_VOL_LIBRARY
    80   COIN_VOL_LIBRARY
    81 )
    82 
    83 IF(COIN_FOUND)
    84   SET(LEMON_HAVE_LP TRUE)
    85   SET(LEMON_HAVE_MIP TRUE)
    86   SET(LEMON_HAVE_CLP TRUE)
    87   SET(LEMON_HAVE_CBC TRUE)
    88 ENDIF(COIN_FOUND)