cmake/FindILOG.cmake
author Alpar Juttner <alpar@cs.elte.hu>
Wed, 17 Oct 2018 17:24:14 +0200
changeset 1180 389416f8a995
parent 1064 fc3854d936f7
child 1205 57abff252556
permissions -rw-r--r--
Better MIP solver discovery and support linking to CLP/CBC on Windows (#614)
     1 FIND_PATH(ILOG_ROOT_DIR
     2   NAMES cplex
     3   DOC "CPLEX STUDIO root directory"
     4   PATHS /opt/ibm/ILOG /usr/local/ibm/ILOG /usr/local/ILOG /usr/local/ilog
     5   PATHS "$ENV{HOME}/ILOG" "$ENV{HOME}/.local/ILOG"
     6   PATHS "$ENV{HOME}/ibm/ILOG" "$ENV{HOME}/.local/ibm/ILOG"
     7   PATHS "C:/Program Files/IBM/ILOG" 
     8   PATH_SUFFIXES "CPLEX_Studio126" "CPLEX_Studio125"
     9   "CPLEX_Studio124" "CPLEX_Studio123" "CPLEX_Studio122"
    10   NO_DEFAULT_PATH
    11 )
    12 
    13 IF(WIN32)
    14   IF(MSVC_VERSION STREQUAL "1400")
    15     SET(ILOG_WIN_COMPILER "windows_vs2005")
    16   ELSEIF(MSVC_VERSION STREQUAL "1500")
    17     SET(ILOG_WIN_COMPILER "windows_vs2008")
    18   ELSEIF(MSVC_VERSION STREQUAL "1600")
    19     SET(ILOG_WIN_COMPILER "windows_vs2010")
    20   ELSE()
    21     SET(ILOG_WIN_COMPILER "windows_vs2008")
    22   ENDIF()
    23   IF(CMAKE_CL_64)
    24     SET(ILOG_WIN_COMPILER "x64_${ILOG_WIN_COMPILER}")
    25     SET(ILOG_WIN_PLATFORM "x64_win32")
    26   ELSE()
    27     SET(ILOG_WIN_COMPILER "x86_${ILOG_WIN_COMPILER}")
    28     SET(ILOG_WIN_PLATFORM "x86_win32")
    29   ENDIF()
    30 ENDIF()
    31 
    32 FIND_PATH(ILOG_CPLEX_ROOT_DIR
    33   NAMES include/ilcplex
    34   HINTS ${ILOG_ROOT_DIR}/cplex ${ILOG_ROOT_DIR}/cplex121
    35   ${ILOG_ROOT_DIR}/cplex122 ${ILOG_ROOT_DIR}/cplex123
    36   DOC "CPLEX root directory"
    37   NO_DEFAULT_PATH
    38 )
    39 
    40 FIND_PATH(ILOG_CONCERT_ROOT_DIR
    41   NAMES include/ilconcert
    42   HINTS ${ILOG_ROOT_DIR}/concert ${ILOG_ROOT_DIR}/concert29
    43   DOC "CONCERT root directory"
    44   NO_DEFAULT_PATH
    45 )
    46 
    47 FIND_PATH(ILOG_CPLEX_INCLUDE_DIR
    48   ilcplex/cplex.h
    49   HINTS ${ILOG_CPLEX_ROOT_DIR}/include
    50   NO_DEFAULT_PATH
    51 )
    52 
    53 FIND_PATH(ILOG_CONCERT_INCLUDE_DIR
    54   ilconcert/ilobasic.h
    55   HINTS ${ILOG_CONCERT_ROOT_DIR}/include
    56   NO_DEFAULT_PATH
    57 )
    58 
    59 FIND_LIBRARY(ILOG_CPLEX_LIBRARY
    60   cplex cplex121 cplex122 cplex123 cplex124
    61   HINTS ${ILOG_CPLEX_ROOT_DIR}/lib/x86_sles10_4.1/static_pic
    62   ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic
    63   ${ILOG_CPLEX_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic
    64   ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic
    65   ${ILOG_CPLEX_ROOT_DIR}/lib/x86_linux/static_pic
    66   ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_linux/static_pic
    67   ${ILOG_CPLEX_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda
    68   NO_DEFAULT_PATH
    69   )
    70 
    71 FIND_LIBRARY(ILOG_CONCERT_LIBRARY
    72   concert
    73   HINTS ${ILOG_CONCERT_ROOT_DIR}/lib/x86_sles10_4.1/static_pic
    74   ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic
    75   ${ILOG_CONCERT_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic
    76   ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic
    77   ${ILOG_CONCERT_ROOT_DIR}/lib/x86_linux/static_pic
    78   ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_linux/static_pic
    79   ${ILOG_CONCERT_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda
    80   NO_DEFAULT_PATH
    81   )
    82 
    83 FIND_FILE(ILOG_CPLEX_DLL
    84   cplex121.dll cplex122.dll cplex123.dll cplex124.dll
    85   HINTS ${ILOG_CPLEX_ROOT_DIR}/bin/${ILOG_WIN_PLATFORM}
    86   NO_DEFAULT_PATH
    87   )
    88 
    89 INCLUDE(FindPackageHandleStandardArgs)
    90 FIND_PACKAGE_HANDLE_STANDARD_ARGS(ILOG
    91   DEFAULT_MSG ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR
    92   )
    93 
    94 IF(ILOG_FOUND)
    95   SET(ILOG_INCLUDE_DIRS ${ILOG_CPLEX_INCLUDE_DIR} ${ILOG_CONCERT_INCLUDE_DIR})
    96   SET(ILOG_LIBRARIES ${ILOG_CPLEX_LIBRARY} ${ILOG_CONCERT_LIBRARY})
    97   IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    98     # SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread")
    99     SET(ILOG_LIBRARIES ${ILOG_LIBRARIES} "m" "pthread")
   100   ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
   101 ENDIF(ILOG_FOUND)
   102 
   103 MARK_AS_ADVANCED(
   104   ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR ILOG_CPLEX_DLL
   105   ILOG_CONCERT_LIBRARY ILOG_CONCERT_INCLUDE_DIR ILOG_CONCERT_DLL
   106   )