cmake/FindCPLEX.cmake
author Peter Kovacs <kpeter@inf.elte.hu>
Thu, 12 Nov 2009 23:26:13 +0100
changeset 806 fa6f37d7a25b
parent 635 89705c452130
child 972 1818cc848005
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.
ladanyi@635
     1
SET(CPLEX_ROOT_DIR "" CACHE PATH "CPLEX root directory")
ladanyi@635
     2
ladanyi@620
     3
FIND_PATH(CPLEX_INCLUDE_DIR
ladanyi@620
     4
  ilcplex/cplex.h
ladanyi@635
     5
  PATHS "C:/ILOG/CPLEX91/include"
ladanyi@635
     6
  PATHS "/opt/ilog/cplex91/include"
ladanyi@635
     7
  HINTS ${CPLEX_ROOT_DIR}/include
ladanyi@635
     8
)
ladanyi@620
     9
FIND_LIBRARY(CPLEX_LIBRARY
ladanyi@635
    10
  cplex91
ladanyi@635
    11
  PATHS "C:/ILOG/CPLEX91/lib/msvc7/stat_mda"
ladanyi@635
    12
  PATHS "/opt/ilog/cplex91/bin"
ladanyi@635
    13
  HINTS ${CPLEX_ROOT_DIR}/bin
ladanyi@635
    14
)
ladanyi@620
    15
ladanyi@620
    16
INCLUDE(FindPackageHandleStandardArgs)
ladanyi@620
    17
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPLEX DEFAULT_MSG CPLEX_LIBRARY CPLEX_INCLUDE_DIR)
ladanyi@620
    18
ladanyi@620
    19
FIND_PATH(CPLEX_BIN_DIR
ladanyi@620
    20
  cplex91.dll
ladanyi@635
    21
  PATHS "C:/ILOG/CPLEX91/bin/x86_win32"
ladanyi@635
    22
)
ladanyi@620
    23
ladanyi@620
    24
IF(CPLEX_FOUND)
ladanyi@620
    25
  SET(CPLEX_INCLUDE_DIRS ${CPLEX_INCLUDE_DIR})
ladanyi@620
    26
  SET(CPLEX_LIBRARIES ${CPLEX_LIBRARY})
ladanyi@636
    27
  IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
ladanyi@636
    28
    SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread")
ladanyi@636
    29
  ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
ladanyi@620
    30
ENDIF(CPLEX_FOUND)
ladanyi@620
    31
ladanyi@620
    32
MARK_AS_ADVANCED(CPLEX_LIBRARY CPLEX_INCLUDE_DIR CPLEX_BIN_DIR)
ladanyi@620
    33
ladanyi@620
    34
IF(CPLEX_FOUND)
ladanyi@627
    35
  SET(LEMON_HAVE_LP TRUE)
ladanyi@627
    36
  SET(LEMON_HAVE_MIP TRUE)
ladanyi@627
    37
  SET(LEMON_HAVE_CPLEX TRUE)
ladanyi@620
    38
ENDIF(CPLEX_FOUND)