[Lemon-commits] Alpar Juttner: Merge

Lemon HG hg at lemon.cs.elte.hu
Sat Apr 25 18:54:00 CEST 2009


details:   http://lemon.cs.elte.hu/hg/lemon/rev/1f631044c290
changeset: 656:1f631044c290
user:      Alpar Juttner <alpar [at] cs.elte.hu>
date:      Sat Apr 25 17:51:09 2009 +0100
description:
	Merge

diffstat:

 CMakeLists.txt        |   8 +---
 cmake/FindCOIN.cmake  |  68 ++++++++++++++++++++++++++++++++++
 cmake/FindCPLEX.cmake |  27 +++++++++++++
 cmake/FindGLPK.cmake  |   7 +++
 lemon/CMakeLists.txt  |  17 ++++++++-
 lemon/config.h.cmake  |   3 +
 test/CMakeLists.txt   |  38 ++++++++++++++++---
 7 files changed, 155 insertions(+), 13 deletions(-)

diffs (270 lines):

diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,6 +14,8 @@
 INCLUDE(FindDoxygen)
 INCLUDE(FindGhostscript)
 FIND_PACKAGE(GLPK 4.33)
+FIND_PACKAGE(CPLEX)
+FIND_PACKAGE(COIN)
 
 ADD_DEFINITIONS(-DHAVE_CONFIG_H)
 
@@ -26,12 +28,6 @@
 # C4996: 'function': was declared deprecated
 ENDIF(MSVC)
 
-IF(GLPK_FOUND)
-  SET(HAVE_LP TRUE)
-  SET(HAVE_MIP TRUE)
-  SET(HAVE_GLPK TRUE)
-ENDIF(GLPK_FOUND)
-
 INCLUDE(CheckTypeSize)
 CHECK_TYPE_SIZE("long long" LONG_LONG)
 
diff --git a/cmake/FindCOIN.cmake b/cmake/FindCOIN.cmake
new file mode 100644
--- /dev/null
+++ b/cmake/FindCOIN.cmake
@@ -0,0 +1,68 @@
+SET(COIN_ROOT_DIR "" CACHE PATH "COIN root directory")
+
+FIND_PATH(COIN_INCLUDE_DIR coin/CoinUtilsConfig.h
+  PATHS ${COIN_ROOT_DIR}/include)
+
+FIND_LIBRARY(COIN_CBC_LIBRARY libCbc
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_CBC_SOLVER_LIBRARY libCbcSolver
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_CGL_LIBRARY libCgl
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_CLP_LIBRARY libClp
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_COIN_UTILS_LIBRARY libCoinUtils
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_OSI_LIBRARY libOsi
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_OSI_CBC_LIBRARY libOsiCbc
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_OSI_CLP_LIBRARY libOsiClp
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_OSI_VOL_LIBRARY libOsiVol
+  PATHS ${COIN_ROOT_DIR}/lib)
+FIND_LIBRARY(COIN_VOL_LIBRARY libVol
+  PATHS ${COIN_ROOT_DIR}/lib)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(COIN DEFAULT_MSG
+  COIN_INCLUDE_DIR
+  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
+)
+
+IF(COIN_FOUND)
+  SET(COIN_INCLUDE_DIRS ${COIN_INCLUDE_DIR})
+  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}")
+  SET(COIN_CLP_LIBRARIES "${COIN_CLP_LIBRARY};${COIN_COIN_UTILS_LIBRARY}")
+  SET(COIN_CBC_LIBRARIES ${COIN_LIBRARIES})
+ENDIF(COIN_FOUND)
+
+MARK_AS_ADVANCED(
+  COIN_INCLUDE_DIR
+  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
+)
+
+IF(COIN_FOUND)
+  SET(HAVE_LP TRUE)
+  SET(HAVE_MIP TRUE)
+  SET(HAVE_CLP TRUE)
+  SET(HAVE_CBC TRUE)
+ENDIF(COIN_FOUND)
diff --git a/cmake/FindCPLEX.cmake b/cmake/FindCPLEX.cmake
new file mode 100644
--- /dev/null
+++ b/cmake/FindCPLEX.cmake
@@ -0,0 +1,27 @@
+FIND_PATH(CPLEX_INCLUDE_DIR
+  ilcplex/cplex.h
+  PATHS "C:/ILOG/CPLEX91/include")
+
+FIND_LIBRARY(CPLEX_LIBRARY
+  NAMES cplex91
+  PATHS "C:/ILOG/CPLEX91/lib/msvc7/stat_mda")
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPLEX DEFAULT_MSG CPLEX_LIBRARY CPLEX_INCLUDE_DIR)
+
+FIND_PATH(CPLEX_BIN_DIR
+  cplex91.dll
+  PATHS "C:/ILOG/CPLEX91/bin/x86_win32")
+
+IF(CPLEX_FOUND)
+  SET(CPLEX_INCLUDE_DIRS ${CPLEX_INCLUDE_DIR})
+  SET(CPLEX_LIBRARIES ${CPLEX_LIBRARY})
+ENDIF(CPLEX_FOUND)
+
+MARK_AS_ADVANCED(CPLEX_LIBRARY CPLEX_INCLUDE_DIR CPLEX_BIN_DIR)
+
+IF(CPLEX_FOUND)
+  SET(HAVE_LP TRUE)
+  SET(HAVE_MIP TRUE)
+  SET(HAVE_CPLEX TRUE)
+ENDIF(CPLEX_FOUND)
diff --git a/cmake/FindGLPK.cmake b/cmake/FindGLPK.cmake
--- a/cmake/FindGLPK.cmake
+++ b/cmake/FindGLPK.cmake
@@ -13,8 +13,15 @@
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLPK DEFAULT_MSG GLPK_LIBRARY GLPK_INCLUDE_DIR)
 
 IF(GLPK_FOUND)
+  SET(GLPK_INCLUDE_DIRS ${GLPK_INCLUDE_DIR})
   SET(GLPK_LIBRARIES ${GLPK_LIBRARY})
   SET(GLPK_BIN_DIR ${GLPK_ROOT_PATH}/bin)
 ENDIF(GLPK_FOUND)
 
 MARK_AS_ADVANCED(GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_BIN_DIR)
+
+IF(GLPK_FOUND)
+  SET(HAVE_LP TRUE)
+  SET(HAVE_MIP TRUE)
+  SET(HAVE_GLPK TRUE)
+ENDIF(GLPK_FOUND)
diff --git a/lemon/CMakeLists.txt b/lemon/CMakeLists.txt
--- a/lemon/CMakeLists.txt
+++ b/lemon/CMakeLists.txt
@@ -20,7 +20,7 @@
 
 IF(HAVE_GLPK)
   SET(LEMON_SOURCES ${LEMON_SOURCES} glpk.cc)
-  INCLUDE_DIRECTORIES(${GLPK_INCLUDE_DIR})
+  INCLUDE_DIRECTORIES(${GLPK_INCLUDE_DIRS})
   IF(WIN32)
     INSTALL(FILES ${GLPK_BIN_DIR}/glpk.dll DESTINATION bin)
     INSTALL(FILES ${GLPK_BIN_DIR}/libltdl3.dll DESTINATION bin)
@@ -28,6 +28,21 @@
   ENDIF(WIN32)
 ENDIF(HAVE_GLPK)
 
+IF(HAVE_CPLEX)
+  SET(LEMON_SOURCES ${LEMON_SOURCES} cplex.cc)
+  INCLUDE_DIRECTORIES(${CPLEX_INCLUDE_DIRS})
+ENDIF(HAVE_CPLEX)
+
+IF(HAVE_CLP)
+  SET(LEMON_SOURCES ${LEMON_SOURCES} clp.cc)
+  INCLUDE_DIRECTORIES(${COIN_INCLUDE_DIRS})
+ENDIF(HAVE_CLP)
+
+IF(HAVE_CBC)
+  SET(LEMON_SOURCES ${LEMON_SOURCES} cbc.cc)
+  INCLUDE_DIRECTORIES(${COIN_INCLUDE_DIRS})
+ENDIF(HAVE_CBC)
+
 ADD_LIBRARY(lemon ${LEMON_SOURCES})
 
 INSTALL(
diff --git a/lemon/config.h.cmake b/lemon/config.h.cmake
--- a/lemon/config.h.cmake
+++ b/lemon/config.h.cmake
@@ -2,3 +2,6 @@
 #cmakedefine HAVE_LP 1
 #cmakedefine HAVE_MIP 1
 #cmakedefine HAVE_GLPK 1
+#cmakedefine HAVE_CPLEX 1
+#cmakedefine HAVE_CLP 1
+#cmakedefine HAVE_CBC 1
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -3,10 +3,6 @@
   ${PROJECT_BINARY_DIR}
 )
 
-IF(HAVE_GLPK)
-  INCLUDE_DIRECTORIES(${GLPK_INCLUDE_DIR})
-ENDIF(HAVE_GLPK)
-
 LINK_DIRECTORIES(${PROJECT_BINARY_DIR}/lemon)
 
 SET(TESTS
@@ -42,9 +38,17 @@
 
 IF(HAVE_LP)
   ADD_EXECUTABLE(lp_test lp_test.cc)
+  SET(LP_TEST_LIBS lemon)
   IF(HAVE_GLPK)
-    TARGET_LINK_LIBRARIES(lp_test lemon ${GLPK_LIBRARIES})
+    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${GLPK_LIBRARIES})
   ENDIF(HAVE_GLPK)
+  IF(HAVE_CPLEX)
+    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${CPLEX_LIBRARIES})
+  ENDIF(HAVE_CPLEX)
+  IF(HAVE_CLP)
+    SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${COIN_CLP_LIBRARIES})
+  ENDIF(HAVE_CLP)
+  TARGET_LINK_LIBRARIES(lp_test ${LP_TEST_LIBS})
   ADD_TEST(lp_test lp_test)
 
   IF(WIN32 AND HAVE_GLPK)
@@ -56,13 +60,28 @@
       COMMAND cmake -E copy ${GLPK_BIN_DIR}/zlib1.dll ${TARGET_PATH}
     )
   ENDIF(WIN32 AND HAVE_GLPK)
+  IF(WIN32 AND HAVE_CPLEX)
+    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 -E copy ${CPLEX_BIN_DIR}/cplex91.dll ${TARGET_PATH}
+    )
+  ENDIF(WIN32 AND HAVE_CPLEX)
 ENDIF(HAVE_LP)
 
 IF(HAVE_MIP)
   ADD_EXECUTABLE(mip_test mip_test.cc)
+  SET(MIP_TEST_LIBS lemon)
   IF(HAVE_GLPK)
-    TARGET_LINK_LIBRARIES(mip_test lemon ${GLPK_LIBRARIES})
+    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${GLPK_LIBRARIES})
   ENDIF(HAVE_GLPK)
+  IF(HAVE_CPLEX)
+    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${CPLEX_LIBRARIES})
+  ENDIF(HAVE_CPLEX)
+  IF(HAVE_CBC)
+    SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${COIN_CBC_LIBRARIES})
+  ENDIF(HAVE_CBC)
+  TARGET_LINK_LIBRARIES(mip_test ${MIP_TEST_LIBS})
   ADD_TEST(mip_test mip_test)
 
   IF(WIN32 AND HAVE_GLPK)
@@ -74,6 +93,13 @@
       COMMAND cmake -E copy ${GLPK_BIN_DIR}/zlib1.dll ${TARGET_PATH}
     )
   ENDIF(WIN32 AND HAVE_GLPK)
+  IF(WIN32 AND HAVE_CPLEX)
+    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 -E copy ${CPLEX_BIN_DIR}/cplex91.dll ${TARGET_PATH}
+    )
+  ENDIF(WIN32 AND HAVE_CPLEX)
 ENDIF(HAVE_MIP)
 
 FOREACH(TEST_NAME ${TESTS})



More information about the Lemon-commits mailing list