cmake/FindCOIN.cmake
author Peter Kovacs <kpeter@inf.elte.hu>
Thu, 12 Nov 2009 23:26:13 +0100
changeset 806 fa6f37d7a25b
parent 627 20dac2104519
child 946 1f1328691a07
permissions -rw-r--r--
Entirely rework CapacityScaling (#180)

- Use the new interface similarly to NetworkSimplex.
- Rework the implementation using an efficient internal structure
for handling the residual network. This improvement made the
code much faster (up to 2-5 times faster on large graphs).
- Handle GEQ supply type (LEQ is not supported).
- Handle negative costs for arcs of finite capacity.
(Note that this algorithm cannot handle arcs of negative cost
and infinite upper bound, thus it returns UNBOUNDED if such
an arc exists.)
- Extend the documentation.
     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)