@@ -9,22 +9,20 @@ add_definitions(-std=c++11)
9
9
find_package ( Eigen3 REQUIRED )
10
10
include_directories (${EIGEN3_INCLUDE_DIR} )
11
11
12
- list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} " )
13
- find_package (GUROBI REQUIRED )
12
+ list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /cmake_finders" )
14
13
15
- if (GUROBI_FOUND )
16
- message (STATUS "GUROBI FOUND" )
17
- else (GUROBI_FOUND )
18
- message (FATAL_ERROR "GUROBI NOT FOUND!" )
19
- endif (GUROBI_FOUND )
20
14
21
- find_package (NLOPT REQUIRED )
22
15
find_package (CGAL REQUIRED )
16
+
17
+
18
+ option (USE_GUROBI "Use GUROBI as the solver" ON ) #if OFF, then it will use NLOPT as the solver
19
+
20
+
23
21
include (${CGAL_USE_FILE} )
24
22
25
23
set (CMAKE_BUILD_TYPE Release ) #From terminal: catkin config -DCMAKE_BUILD_TYPE=Release (or RelWithDebInfo) or Debug
26
24
27
- include_directories ( ${GUROBI_INCLUDE_DIRS} )
25
+
28
26
29
27
find_package (catkin REQUIRED COMPONENTS
30
28
roscpp
@@ -36,7 +34,7 @@ find_package(catkin REQUIRED COMPONENTS
36
34
decomp_ros_utils
37
35
rviz_visual_tools
38
36
separator
39
- jsk_rviz_plugins
37
+ jsk_rviz_plugins
40
38
)
41
39
find_package (decomp_util REQUIRED )
42
40
include_directories (${DECOMP_UTIL_INCLUDE_DIRS} )
@@ -45,8 +43,6 @@ catkin_package()
45
43
46
44
include_directories (${catkin_INCLUDE_DIRS} include )
47
45
48
- set (GUROBI_LIBRARIES "$ENV{GUROBI_HOME} /lib/libgurobi_c++.a;$ENV{GUROBI_HOME} /lib/libgurobi91.so;$ENV{GUROBI_HOME} /lib/" )
49
-
50
46
#For precompile headers see example here
51
47
#https://gitlab.kitware.com/cmake/cmake/tree/375d01c6808713a0cfeef9ea092c8236ba063525/Tests/PrecompileHeaders
52
48
@@ -62,18 +58,46 @@ add_library(octopus_search STATIC src/octopus_search.cpp src/bspline_utils.cpp s
62
58
target_include_directories (octopus_search PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
63
59
target_link_libraries (octopus_search PUBLIC ${catkin_LIBRARIES} )
64
60
61
+ if (USE_GUROBI )
62
+
63
+ find_package (GUROBI REQUIRED )
64
+
65
+ if (GUROBI_FOUND )
66
+ message (STATUS "GUROBI FOUND" )
67
+ else (GUROBI_FOUND )
68
+ message (FATAL_ERROR "GUROBI NOT FOUND!" )
69
+ endif (GUROBI_FOUND )
70
+
71
+ include_directories (${GUROBI_INCLUDE_DIRS} )
72
+ file (GLOB GurobiSOFiles $ENV{GUROBI_HOME} /lib/libgurobi*[0-9].so ) #files that are start with libgurobi and end with number.so
73
+ set (GUROBI_LIBRARIES "$ENV{GUROBI_HOME} /lib/libgurobi_c++.a;${GurobiSOFiles} ;$ENV{GUROBI_HOME} /lib/" )
65
74
66
- add_library (solver_nlopt STATIC src/solver_nlopt.cpp src/bspline_utils.cpp src/nlopt_utils.cpp )
67
- target_include_directories (solver_nlopt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${DECOMP_UTIL_INCLUDE_DIRS} )
68
- target_link_libraries (solver_nlopt PUBLIC ${NLOPT_LIBRARIES} ${DECOMP_UTIL_LIBRARIES} utils octopus_search ${catkin_LIBRARIES} cgal_utils )
75
+ add_library (solver STATIC src/solver_gurobi.cpp src/bspline_utils.cpp src/solver_gurobi_utils.cpp src/solver_gurobi_guess.cpp )
76
+ target_compile_definitions (solver PUBLIC USE_GUROBI_FLAG=1 )
77
+ target_include_directories (solver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${DECOMP_UTIL_INCLUDE_DIRS} )
78
+ target_link_libraries (solver PUBLIC ${GUROBI_LIBRARIES} ${DECOMP_UTIL_LIBRARIES} utils octopus_search ${catkin_LIBRARIES} cgal_utils )
79
+
80
+ add_executable (test_gurobi src/examples/test_gurobi.cpp )
81
+ add_dependencies (test_gurobi ${catkin_EXPORTED_TARGETS} )
82
+ target_link_libraries (test_gurobi ${catkin_LIBRARIES} utils ${GUROBI_LIBRARIES} solver )
83
+
84
+ else ()
85
+ find_package (NLOPT REQUIRED )
86
+
87
+ add_library (solver STATIC src/solver_nlopt.cpp src/bspline_utils.cpp src/nlopt_utils.cpp )
88
+ target_compile_definitions (solver PUBLIC USE_GUROBI_FLAG=0 )
89
+ target_include_directories (solver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${DECOMP_UTIL_INCLUDE_DIRS} )
90
+ target_link_libraries (solver PUBLIC ${NLOPT_LIBRARIES} ${DECOMP_UTIL_LIBRARIES} utils octopus_search ${catkin_LIBRARIES} cgal_utils )
91
+
92
+ add_executable (test_nlopt src/examples/test_nlopt.cpp )
93
+ add_dependencies (test_nlopt ${catkin_EXPORTED_TARGETS} )
94
+ target_link_libraries (test_nlopt ${catkin_LIBRARIES} utils solver )
95
+
96
+ endif ()
69
97
70
- add_library (solver_gurobi STATIC src/solver_gurobi.cpp src/bspline_utils.cpp src/nlopt_utils.cpp src/solver_gurobi_utils.cpp src/solver_gurobi_guess.cpp )
71
- target_include_directories (solver_gurobi PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${DECOMP_UTIL_INCLUDE_DIRS} )
72
- target_link_libraries (solver_gurobi PUBLIC ${NLOPT_LIBRARIES} ${GUROBI_LIBRARIES} ${DECOMP_UTIL_LIBRARIES} utils octopus_search ${catkin_LIBRARIES} cgal_utils )
73
98
74
- # enable_unity_build(UNITY_BUILD_NAME src/mader_node.cpp)
75
99
add_executable (${PROJECT_NAME} _node src/mader_node.cpp src/mader_ros.cpp src/mader.cpp )
76
- target_link_libraries (${PROJECT_NAME} _node PUBLIC ${catkin_LIBRARIES} solver_nlopt solver_gurobi utils ) #${CGAL_LIBS}
100
+ target_link_libraries (${PROJECT_NAME} _node PUBLIC ${catkin_LIBRARIES} solver utils ) #${CGAL_LIBS}
77
101
add_dependencies (${PROJECT_NAME} _node ${catkin_EXPORTED_TARGETS} )
78
102
79
103
add_executable (test_octopus_search src/examples/test_octopus_search.cpp src/octopus_search.cpp src/bspline_utils.cpp )
@@ -84,18 +108,13 @@ add_executable(test_utils src/examples/test_utils.cpp)
84
108
add_dependencies (test_utils ${catkin_EXPORTED_TARGETS} )
85
109
target_link_libraries (test_utils ${catkin_LIBRARIES} utils )
86
110
87
- add_executable (test_nlopt src/examples/test_nlopt.cpp )
88
- add_dependencies (test_nlopt ${catkin_EXPORTED_TARGETS} )
89
- target_link_libraries (test_nlopt ${catkin_LIBRARIES} utils solver_nlopt )
90
-
91
- add_executable (test_gurobi src/examples/test_gurobi.cpp )
92
- add_dependencies (test_gurobi ${catkin_EXPORTED_TARGETS} )
93
- target_link_libraries (test_gurobi ${catkin_LIBRARIES} utils ${GUROBI_LIBRARIES} solver_gurobi )
94
111
95
112
add_executable (test_bspline_utils src/examples/test_bspline_utils.cpp src/bspline_utils.cpp )
96
113
add_dependencies (test_bspline_utils ${catkin_EXPORTED_TARGETS} )
97
114
target_link_libraries (test_bspline_utils ${catkin_LIBRARIES} )
98
115
116
+ unset (USE_GUROBI CACHE ) # To avoid https://stackoverflow.com/questions/22481647/cmake-if-else-with-option
117
+
99
118
100
119
# add_library(mader STATIC src/mader.cpp src/mader.hpp)
101
120
# target_include_directories (mader PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
@@ -115,8 +134,3 @@ target_link_libraries(test_bspline_utils ${catkin_LIBRARIES})
115
134
# add_executable(test_predictor_node src/test_predictor.cpp src/predictor.cpp src/bspline_utils.cpp)
116
135
# add_dependencies(test_predictor_node ${catkin_EXPORTED_TARGETS})
117
136
# target_link_libraries(test_predictor_node ${catkin_LIBRARIES} utils)
118
-
119
-
120
- # add_executable(test_cvxgen src/solvers/cvxgen/test_cvxgen.cpp src/solvers/cvxgen/solver_cvxgen.cpp)
121
- # add_dependencies(test_cvxgen ${catkin_EXPORTED_TARGETS})
122
- # target_link_libraries(test_cvxgen ${catkin_LIBRARIES} ${catkin_LIBRARIES} ${CMAKE_CURRENT_LIST_DIR}/src/solvers/cvxgen/cvxgen/libcvx.so)
0 commit comments