[Lemon-commits] Alpar Juttner: Better CPLEX discovery (#446)

Lemon HG hg at lemon.cs.elte.hu
Wed Jul 24 11:11:12 CEST 2013


details:   http://lemon.cs.elte.hu/hg/lemon/rev/caf16813b1e8
changeset: 1230:caf16813b1e8
user:      Alpar Juttner <alpar [at] cs.elte.hu>
date:      Sat Jul 21 10:18:57 2012 +0200
description:
	Better CPLEX discovery (#446)

diffstat:

 CMakeLists.txt        |    2 +-
 INSTALL               |    2 +-
 cmake/FindCPLEX.cmake |   40 ------------------
 cmake/FindGLPK.cmake  |    1 +
 cmake/FindILOG.cmake  |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++
 lemon/CMakeLists.txt  |    2 +-
 test/CMakeLists.txt   |    8 +-
 7 files changed, 116 insertions(+), 47 deletions(-)

diffs (239 lines):

diff -r b4f4c08e1210 -r caf16813b1e8 CMakeLists.txt
--- a/CMakeLists.txt	Sun Feb 24 19:44:14 2013 +0100
+++ b/CMakeLists.txt	Sat Jul 21 10:18:57 2012 +0200
@@ -62,7 +62,7 @@
 FIND_PACKAGE(Doxygen)
 FIND_PACKAGE(Ghostscript)
 FIND_PACKAGE(GLPK 4.33)
-FIND_PACKAGE(CPLEX)
+FIND_PACKAGE(ILOG)
 FIND_PACKAGE(COIN)
 
 IF(DEFINED ENV{LEMON_CXX_WARNING})
diff -r b4f4c08e1210 -r caf16813b1e8 INSTALL
--- a/INSTALL	Sun Feb 24 19:44:14 2013 +0100
+++ b/INSTALL	Sat Jul 21 10:18:57 2012 +0200
@@ -108,7 +108,7 @@
 
 -DGLPK_ROOT_DIR=DIRECTORY
 -DCOIN_ROOT_DIR=DIRECTORY
--DCPLEX_ROOT_DIR=DIRECTORY
+-DILOG_ROOT_DIR=DIRECTORY
 
   Install root directory prefixes of optional third party libraries.
 
diff -r b4f4c08e1210 -r caf16813b1e8 cmake/FindCPLEX.cmake
--- a/cmake/FindCPLEX.cmake	Sun Feb 24 19:44:14 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-SET(CPLEX_ROOT_DIR "" CACHE PATH "CPLEX root directory")
-
-FIND_PATH(CPLEX_INCLUDE_DIR
-  ilcplex/cplex.h
-  PATHS "C:/ILOG/CPLEX/include"
-  PATHS "/opt/ilog/cplex/include"
-  HINTS ${CPLEX_ROOT_DIR}/include
-)
-FIND_LIBRARY(CPLEX_LIBRARY
-  cplex
-  PATHS "C:/ILOG/CPLEX/lib/msvc7/stat_mda"
-  PATHS "/opt/ilog/cplex/bin"
-  HINTS ${CPLEX_ROOT_DIR}/bin
-  HINTS ${CPLEX_ROOT_DIR}/lib
-)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPLEX DEFAULT_MSG CPLEX_LIBRARY CPLEX_INCLUDE_DIR)
-
-FIND_PATH(CPLEX_BIN_DIR
-  cplex.dll
-  PATHS "C:/ILOG/CPLEX/bin/x86_win32"
-  HINTS ${CPLEX_ROOT_DIR}/bin
-)
-
-IF(CPLEX_FOUND)
-  SET(CPLEX_INCLUDE_DIRS ${CPLEX_INCLUDE_DIR})
-  SET(CPLEX_LIBRARIES ${CPLEX_LIBRARY})
-  IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-    SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread")
-  ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-ENDIF(CPLEX_FOUND)
-
-MARK_AS_ADVANCED(CPLEX_LIBRARY CPLEX_INCLUDE_DIR CPLEX_BIN_DIR)
-
-IF(CPLEX_FOUND)
-  SET(LEMON_HAVE_LP TRUE)
-  SET(LEMON_HAVE_MIP TRUE)
-  SET(LEMON_HAVE_CPLEX TRUE)
-ENDIF(CPLEX_FOUND)
diff -r b4f4c08e1210 -r caf16813b1e8 cmake/FindGLPK.cmake
--- a/cmake/FindGLPK.cmake	Sun Feb 24 19:44:14 2013 +0100
+++ b/cmake/FindGLPK.cmake	Sat Jul 21 10:18:57 2012 +0200
@@ -59,3 +59,4 @@
   SET(LEMON_HAVE_MIP TRUE)
   SET(LEMON_HAVE_GLPK TRUE)
 ENDIF(GLPK_FOUND)
+
diff -r b4f4c08e1210 -r caf16813b1e8 cmake/FindILOG.cmake
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake/FindILOG.cmake	Sat Jul 21 10:18:57 2012 +0200
@@ -0,0 +1,108 @@
+FIND_PATH(ILOG_ROOT_DIR
+  NAMES cplex
+  DOC "CPLEX STUDIO root directory"
+  PATHS /opt/ibm/ILOG /usr/local/ibm/ILOG /usr/local/ILOG /usr/local/ilog
+  PATHS "$ENV{HOME}/ILOG" "$ENV{HOME}/.local/ILOG"
+  PATHS "$ENV{HOME}/ibm/ILOG" "$ENV{HOME}/.local/ibm/ILOG"
+  PATHS "C:/Program Files/IBM/ILOG" 
+  PATH_SUFFIXES "CPLEX_Studio126" "CPLEX_Studio125"
+  "CPLEX_Studio124" "CPLEX_Studio123" "CPLEX_Studio122"
+  NO_DEFAULT_PATH
+)
+
+IF(WIN32)
+  IF(MSVC_VERSION STREQUAL "1400")
+    SET(ILOG_WIN_COMPILER "windows_vs2005")
+  ELSEIF(MSVC_VERSION STREQUAL "1500")
+    SET(ILOG_WIN_COMPILER "windows_vs2008")
+  ELSEIF(MSVC_VERSION STREQUAL "1600")
+    SET(ILOG_WIN_COMPILER "windows_vs2010")
+  ELSE()
+    SET(ILOG_WIN_COMPILER "windows_vs2008")
+  ENDIF()
+  IF(CMAKE_CL_64)
+    SET(ILOG_WIN_COMPILER "x64_${ILOG_WIN_COMPILER}")
+    SET(ILOG_WIN_PLATFORM "x64_win32")
+  ELSE()
+    SET(ILOG_WIN_COMPILER "x86_${ILOG_WIN_COMPILER}")
+    SET(ILOG_WIN_PLATFORM "x86_win32")
+  ENDIF()
+ENDIF()
+
+FIND_PATH(ILOG_CPLEX_ROOT_DIR
+  NAMES include/ilcplex
+  HINTS ${ILOG_ROOT_DIR}/cplex ${ILOG_ROOT_DIR}/cplex121
+  ${ILOG_ROOT_DIR}/cplex122 ${ILOG_ROOT_DIR}/cplex123
+  DOC "CPLEX root directory"
+  NO_DEFAULT_PATH
+)
+
+FIND_PATH(ILOG_CONCERT_ROOT_DIR
+  NAMES include/ilconcert
+  HINTS ${ILOG_ROOT_DIR}/concert ${ILOG_ROOT_DIR}/concert29
+  DOC "CONCERT root directory"
+  NO_DEFAULT_PATH
+)
+
+FIND_PATH(ILOG_CPLEX_INCLUDE_DIR
+  ilcplex/cplex.h
+  HINTS ${ILOG_CPLEX_ROOT_DIR}/include
+  NO_DEFAULT_PATH
+)
+
+FIND_PATH(ILOG_CONCERT_INCLUDE_DIR
+  ilconcert/ilobasic.h
+  HINTS ${ILOG_CONCERT_ROOT_DIR}/include
+  NO_DEFAULT_PATH
+)
+
+FIND_LIBRARY(ILOG_CPLEX_LIBRARY
+  cplex cplex121 cplex122 cplex123 cplex124
+  HINTS ${ILOG_CPLEX_ROOT_DIR}/lib/x86_sles10_4.1/static_pic
+  ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic
+  ${ILOG_CPLEX_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic
+  ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic
+  ${ILOG_CPLEX_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda
+  NO_DEFAULT_PATH
+  )
+
+FIND_LIBRARY(ILOG_CONCERT_LIBRARY
+  concert
+  HINTS ${ILOG_CONCERT_ROOT_DIR}/lib/x86_sles10_4.1/static_pic
+  ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic
+  ${ILOG_CONCERT_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic
+  ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic
+  ${ILOG_CONCERT_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda
+  NO_DEFAULT_PATH
+  )
+
+FIND_FILE(ILOG_CPLEX_DLL
+  cplex121.dll cplex122.dll cplex123.dll cplex124.dll
+  HINTS ${ILOG_CPLEX_ROOT_DIR}/bin/${ILOG_WIN_PLATFORM}
+  NO_DEFAULT_PATH
+  )
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ILOG
+  DEFAULT_MSG ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR
+  )
+
+IF(ILOG_FOUND)
+  SET(ILOG_INCLUDE_DIRS ${ILOG_CPLEX_INCLUDE_DIR} ${ILOG_CONCERT_INCLUDE_DIR})
+  SET(ILOG_LIBRARIES ${ILOG_CPLEX_LIBRARY} ${ILOG_CONCERT_LIBRARY})
+  IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+    # SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread")
+    SET(ILOG_LIBRARIES ${ILOG_LIBRARIES} "m" "pthread")
+  ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ENDIF(ILOG_FOUND)
+
+MARK_AS_ADVANCED(
+  ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR ILOG_CPLEX_DLL
+  ILOG_CONCERT_LIBRARY ILOG_CONCERT_INCLUDE_DIR ILOG_CONCERT_DLL
+  )
+
+IF(ILOG_FOUND)
+  SET(LEMON_HAVE_LP TRUE)
+  SET(LEMON_HAVE_MIP TRUE)
+  SET(LEMON_HAVE_CPLEX TRUE)
+ENDIF(ILOG_FOUND)
diff -r b4f4c08e1210 -r caf16813b1e8 lemon/CMakeLists.txt
--- a/lemon/CMakeLists.txt	Sun Feb 24 19:44:14 2013 +0100
+++ b/lemon/CMakeLists.txt	Sat Jul 21 10:18:57 2012 +0200
@@ -36,7 +36,7 @@
 
 IF(LEMON_HAVE_CPLEX)
   SET(LEMON_SOURCES ${LEMON_SOURCES} cplex.cc)
-  INCLUDE_DIRECTORIES(${CPLEX_INCLUDE_DIRS})
+  INCLUDE_DIRECTORIES(${ILOG_INCLUDE_DIRS})
 ENDIF()
 
 IF(LEMON_HAVE_CLP)
diff -r b4f4c08e1210 -r caf16813b1e8 test/CMakeLists.txt
--- a/test/CMakeLists.txt	Sun Feb 24 19:44:14 2013 +0100
+++ b/test/CMakeLists.txt	Sat Jul 21 10:18:57 2012 +0200
@@ -66,7 +66,7 @@
     SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${GLPK_LIBRARIES})
   ENDIF()
   IF(LEMON_HAVE_CPLEX)
-    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${CPLEX_LIBRARIES})
+    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${ILOG_LIBRARIES})
   ENDIF()
   IF(LEMON_HAVE_CLP)
     SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${COIN_CLP_LIBRARIES})
@@ -90,7 +90,7 @@
     GET_TARGET_PROPERTY(TARGET_LOC lp_test LOCATION)
     GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH)
     ADD_CUSTOM_COMMAND(TARGET lp_test POST_BUILD
-      COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH}
+      COMMAND ${CMAKE_COMMAND} -E copy ${ILOG_CPLEX_DLL} ${TARGET_PATH}
     )
   ENDIF()
 ENDIF()
@@ -108,7 +108,7 @@
     SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${GLPK_LIBRARIES})
   ENDIF()
   IF(LEMON_HAVE_CPLEX)
-    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${CPLEX_LIBRARIES})
+    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${ILOG_LIBRARIES})
   ENDIF()
   IF(LEMON_HAVE_CBC)
     SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${COIN_CBC_LIBRARIES})
@@ -132,7 +132,7 @@
     GET_TARGET_PROPERTY(TARGET_LOC mip_test LOCATION)
     GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH)
     ADD_CUSTOM_COMMAND(TARGET mip_test POST_BUILD
-      COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH}
+      COMMAND ${CMAKE_COMMAND} -E copy ${ILOG_CPLEX_DLL} ${TARGET_PATH}
     )
   ENDIF()
 ENDIF()


More information about the Lemon-commits mailing list