forked from LiangliangNan/PolyFit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FindGUROBI.cmake
executable file
·134 lines (118 loc) · 5.24 KB
/
FindGUROBI.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# ------------------------------------------------------------------------------
# Copyright (C) 2015 by Liangliang Nan ([email protected])
# https://3d.bk.tudelft.nl/liangliang/
#
# This file is part of Easy3D. If it is useful in your research/work,
# I would be grateful if you show your appreciation by citing it:
# ------------------------------------------------------------------
# Liangliang Nan.
# Easy3D: a lightweight, easy-to-use, and efficient C++
# library for processing and rendering 3D data. 2018.
# ------------------------------------------------------------------
#
# Easy3D is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License Version 3
# as published by the Free Software Foundation.
#
# Easy3D is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# This file sets up Gurobi for CMake. Once done this will define
#
# GUROBI_FOUND - system has GUROBI
# GUROBI_INCLUDE_DIRS - the GUROBI include directories
# GUROBI_LIBRARIES - Link these to use GUROBI
#
# In your CMakeLists file, you need to add, e.g. (modify it if necessary):
# if (GUROBI_FOUND)
# message(STATUS "Gurobi include dir: " ${GUROBI_INCLUDE_DIRS})
# message(STATUS "Gurobi libraries: " ${GUROBI_LIBRARIES})
# target_compile_definitions(${PROJECT_NAME} PUBLIC HAS_GUROBI)
# target_include_directories(${PROJECT_NAME} PRIVATE ${GUROBI_INCLUDE_DIRS})
# target_link_libraries(${PROJECT_NAME} PRIVATE ${GUROBI_LIBRARIES})
# endif()
# ------------------------------------------------------------------------------
# Is it already configured?
if (NOT GUROBI_FOUND)
# Hardcoded search paths
set(SEARCH_PATHS_FOR_HEADERS
"$ENV{GUROBI_HOME}/include"
"/Library/gurobi952/macos_universal2/include"
"/Library/gurobi951/macos_universal2/include"
"/Library/gurobi950/macos_universal2/include"
"/Library/gurobi901/macos_universal2/include"
"/Library/gurobi952/mac64/include"
"/Library/gurobi951/mac64/include"
"/Library/gurobi950/mac64/include"
"/Library/gurobi901/mac64/include"
"/home/liangliang/dev/gurobi952/include"
"/home/liangliang/dev/gurobi951/include"
"/home/liangliang/dev/gurobi950/include"
"/home/liangliang/dev/gurobi901/include"
"D:\\dev\\Gurobi-9.5.2\\win64\\include"
"D:\\dev\\gurobi951\\win64\\include"
"D:\\dev\\gurobi950\\win64\\include"
"D:\\dev\\gurobi901\\win64\\include"
)
set(SEARCH_PATHS_FOR_LIBRARIES
"$ENV{GUROBI_HOME}/lib"
"/Library/gurobi952/macos_universal2/lib"
"/Library/gurobi951/macos_universal2/lib"
"/Library/gurobi950/macos_universal2/lib"
"/Library/gurobi901/macos_universal2/lib"
"/Library/gurobi952/mac64/lib"
"/Library/gurobi951/mac64/lib"
"/Library/gurobi950/mac64/lib"
"/Library/gurobi901/mac64/lib"
"/home/liangliang/dev/gurobi952/lib"
"/home/liangliang/dev/gurobi951/lib"
"/home/liangliang/dev/gurobi950/lib"
"/home/liangliang/dev/gurobi901/lib"
"D:\\dev\\Gurobi-9.5.2\\win64\\lib"
"D:\\dev\\gurobi951\\win64\\lib"
"D:\\dev\\gurobi950\\win64\\lib"
"D:\\dev\\gurobi901\\win64\\lib"
)
find_path(GUROBI_INCLUDE_DIR gurobi_c++.h
PATHS ${SEARCH_PATHS_FOR_HEADERS}
)
find_library(GUROBI_C_LIBRARY
NAMES gurobi95 gurobi90 libgurobi
PATHS ${SEARCH_PATHS_FOR_LIBRARIES}
)
find_library(GUROBI_CXX_LIBRARY_DEBUG
NAMES gurobi_c++ gurobi_c++mdd2017
PATHS ${SEARCH_PATHS_FOR_LIBRARIES}
)
find_library(GUROBI_CXX_LIBRARY_RELEASE
NAMES gurobi_c++ gurobi_c++md2017
PATHS ${SEARCH_PATHS_FOR_LIBRARIES}
)
# setup header file directories
set(GUROBI_INCLUDE_DIRS ${GUROBI_INCLUDE_DIR})
# setup libraries files
set(GUROBI_LIBRARIES
debug ${GUROBI_CXX_LIBRARY_DEBUG}
optimized ${GUROBI_CXX_LIBRARY_RELEASE}
${GUROBI_C_LIBRARY}
)
endif ()
# Check that Gurobi was successfully found
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GUROBI DEFAULT_MSG GUROBI_INCLUDE_DIRS)
find_package_handle_standard_args(GUROBI DEFAULT_MSG GUROBI_LIBRARIES)
# Hide variables from CMake-Gui options
mark_as_advanced(
GUROBI_INCLUDE_DIRS
GUROBI_INCLUDE_DIR
GUROBI_LIBRARIES
GUROBI_CXX_LIBRARY_DEBUG
GUROBI_CXX_LIBRARY_RELEASE
GUROBI_C_LIBRARY
)