# HG changeset patch # User Alpar Juttner # Date 1342858737 -7200 # Node ID caf16813b1e8c0f2f0bbd4b303442620b921834c # Parent b4f4c08e12104568afd3bcd60594dfc119e06ebf Better CPLEX discovery (#446) 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()