-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
66 lines (55 loc) · 2.61 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.1)
add_compile_options(-std=c++17 -O3)
link_directories(${CMAKE_SOURCE_DIR}/ext/lib/ ${CMAKE_SOURCE_DIR}/ext/lib/matlab/ ${CMAKE_SOURCE_DIR}/ext/lib/mosek/ ${CMAKE_SOURCE_DIR}/ext/lib/scs/)
project(SPOPT CXX)
set(MATLAB_EXTENSION false)
set(SCS_EXTENSION false)
set(MOSEK_EXTENSION false)
add_library(problem_data STATIC ./src/ProblemData.cpp)
if (MATLAB_EXTENSION)
target_compile_definitions(problem_data PRIVATE __BUILD_WITH_MATLAB__)
endif()
target_include_directories(problem_data PUBLIC ./include ./ext/include/)
if (MATLAB_EXTENSION)
target_link_libraries(problem_data libyaml-cpp.a libmat.dylib libmex.dylib libmx.dylib)
else()
target_link_libraries(problem_data libyaml-cpp.a)
endif()
add_library(solver STATIC ./src/Solver.cpp)
target_include_directories(solver PUBLIC ./include ./ext/include/)
target_link_libraries(solver libyaml-cpp.a libaa.a blas lapack)
add_library(dual_lagrangian_solver STATIC ./src/DualLagrangianSolver.cpp)
target_include_directories(dual_lagrangian_solver PUBLIC ./include ./ext/include)
target_link_libraries(dual_lagrangian_solver solver libyaml-cpp.a)
add_library(hsde_solver STATIC ./src/HSDESolver.cpp)
target_include_directories(hsde_solver PUBLIC ./include ./ext/include)
target_link_libraries(hsde_solver solver libyaml-cpp.a)
if (MOSEK_EXTENSION)
add_library(mosek_solver STATIC ./src/MOSEKSolver.cpp)
target_include_directories(mosek_solver PUBLIC ./include ./ext/include ./ext/include/mosek)
if(APPLE)
target_link_libraries(mosek_solver solver libmosek64.9.2.dylib libfusion64.9.2.dylib)
else()
target_link_libraries(mosek_solver solver libmosek64.so libfusion64.so)
endif()
endif()
if (SCS_EXTENSION)
add_library(scs_solver STATIC ./src/SCSSolver.cpp)
target_include_directories(scs_solver PUBLIC ./include/ ./ext/include/scs ./ext/include/linsys ./ext/include)
if(APPLE)
target_link_libraries(scs_solver solver libscsdir.a libscsdir.dylib libscsindir.a libscsindir.dylib)
else()
target_link_libraries(scs_solver solver libscsdir.a libscsdir.so libscsindir.a libscsindir.so)
endif()
endif()
add_executable(SPOPT ./src/SPOPT.cpp)
target_include_directories(SPOPT PRIVATE ./include ./ext/include)
target_link_libraries(SPOPT problem_data hsde_solver dual_lagrangian_solver solver libyaml-cpp.a libboost_program_options-mt.a)
if (MOSEK_EXTENSION)
target_compile_definitions(SPOPT PRIVATE __BUILD_WITH_MOSEK__)
target_link_libraries(SPOPT mosek_solver)
endif()
if (SCS_EXTENSION)
target_compile_definitions(SPOPT PRIVATE __BUILD_WITH_SCS__)
target_link_libraries(SPOPT scs_solver)
endif()