this repo has no description
at develop 3.0 kB view raw
1# - Try to find Gurobi 2# Once done this will define 3# GUROBI_FOUND - System has GUROBI 4# GUROBI_INCLUDE_DIRS - The GUROBI include directories 5# GUROBI_LIBRARIES - The libraries needed to use GUROBI 6# GUROBI_COMPILE_FLAGS - The definitions required to compile with GUROBI 7# User can set Gurobi_ROOT to the preferred installation prefix 8 9option(GUROBI_PLUGIN "Build Gurobi binding as a plugin" ON) 10 11set(GUROBI_COMPILE_FLAGS "-fPIC -fno-strict-aliasing -fexceptions") 12 13set(GUROBI_VERSIONS 913 912 911 910 903 902 901 900 811 810 801 752 702) 14 15foreach(VERSION ${GUROBI_VERSIONS}) 16 list(APPEND GUROBI_DEFAULT_LOC "/opt/gurobi${VERSION}/linux64") 17 list(APPEND GUROBI_DEFAULT_LOC "/opt/gurobi${VERSION}/linux64") 18 list(APPEND GUROBI_DEFAULT_LOC "C:\\gurobi${VERSION}\\win64") 19 list(APPEND GUROBI_DEFAULT_LOC "C:\\gurobi${VERSION}\\win32") 20 list(APPEND GUROBI_DEFAULT_LOC "/Library/gurobi${VERSION}/mac64") 21 22 string(SUBSTRING ${VERSION} 0 2 VERSION) 23 list(APPEND GUROBI_LIB_NAMES gurobi${VERSION}) 24endforeach(VERSION) 25 26find_path(GUROBI_INCLUDE gurobi_c.h 27 PATHS $ENV{GUROBI_HOME} 28 HINTS ${GUROBI_DEFAULT_LOC} 29 PATH_SUFFIXES include) 30 31if(NOT "${GUROBI_INCLUDE}" STREQUAL "GUROBI_INCLUDE-NOTFOUND") 32 file(READ "${GUROBI_INCLUDE}/gurobi_c.h" GUROBI_CONFIG) 33 string(REGEX MATCH "\#define GRB_VERSION_MAJOR +([0-9]+)" _ "${GUROBI_CONFIG}") 34 set(GRB_VERSION_MAJOR "${CMAKE_MATCH_1}") 35 string(REGEX MATCH "\#define GRB_VERSION_MINOR +([0-9]+)" _ "${GUROBI_CONFIG}") 36 set(GRB_VERSION_MINOR "${CMAKE_MATCH_1}") 37 string(REGEX MATCH "\#define GRB_VERSION_TECHNICAL +([0-9]+)" _ "${GUROBI_CONFIG}") 38 set(GRB_VERSION_TECHNICAL "${CMAKE_MATCH_1}") 39 set(GUROBI_VERSION "${GRB_VERSION_MAJOR}.${GRB_VERSION_MINOR}.${GRB_VERSION_TECHNICAL}") 40 unset(GUROBI_CONFIG) 41endif() 42 43if(GUROBI_PLUGIN) 44 include(CheckIncludeFiles) 45 # TODO: Cleanup this mess 46 check_include_files(dlfcn.h HAS_DLFCN_H) 47 check_include_files(Windows.h HAS_WINDOWS_H) 48 if(HAS_DLFCN_H) 49 find_library(GUROBI_LIBRARY dl) 50 elseif(HAS_WINDOWS_H) 51 set(GUROBI_LIBRARY ${GUROBI_INCLUDE}) 52 endif() 53else() 54 foreach(GUROBI_LIB ${GUROBI_LIB_NAMES}) 55 find_library(GUROBI_LIBRARY NAMES ${GUROBI_LIB} 56 HINTS $ENV{GUROBI_HOME} 57 PATHS ${GUROBI_DEFAULT_LOC} 58 PATH_SUFFIXES lib) 59 if(NOT "${GUROBI_LIBRARY}" STREQUAL "GUROBI_LIBRARY-NOTFOUND") 60 break() 61 endif() 62 endforeach(GUROBI_LIB) 63endif() 64 65include(FindPackageHandleStandardArgs) 66# handle the QUIETLY and REQUIRED arguments and set GUROBI_FOUND to TRUE 67# if all listed variables are TRUE 68find_package_handle_standard_args(Gurobi 69 FOUND_VAR GUROBI_FOUND 70 REQUIRED_VARS GUROBI_INCLUDE GUROBI_LIBRARY 71 VERSION_VAR GUROBI_VERSION 72 FAIL_MESSAGE "Could NOT find Gurobi, use GUROBI_ROOT to hint its location" 73) 74 75if(GUROBI_PLUGIN AND HAS_WINDOWS_H AND NOT HAS_DLFCN_H) 76 unset(GUROBI_LIBRARY) 77endif() 78 79mark_as_advanced(GUROBI_INCLUDE GUROBI_LIBRARY) 80 81set(GUROBI_LIBRARIES ${GUROBI_LIBRARY}) 82set(GUROBI_INCLUDE_DIRS ${GUROBI_INCLUDE})