-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
101 lines (81 loc) · 3.28 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
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
cmake_minimum_required(VERSION 3.10)
project(openloong-dyn-control)
IF (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
ENDIF ()
add_compile_options(-std=c++17)
#系统eigen版本可能老旧,使用自供eigen
set(dirEigen "third_party/eigen3")
set(dirGlfw "third_party/glfw")
set(dirPino "third_party/pinocchio")
set(dirJson "third_party/jsoncpp")
set(dirQuill "third_party/quill")
set(dirQP "third_party/qpOASES")
set(libURDF "third_party/urdfdom")
set(incFmt "third_party/quill/quill/bundled")
set(incBoost "third_party/boost")
set(incMujoco "third_party/mujoco")
set(allDir ${dirEigen} ${dirGlfw} ${dirPino} ${dirJson} ${dirQuill} ${dirQP} )
set(allLib ${allDir} ${libURDF})
set(allInc ${allDir} ${incFmt} ${incBoost} ${incMujoco})
include_directories(${allInc})
include_directories("algorithm")
include_directories("common")
include_directories("math")
include_directories("sim_interface")
message(${CMAKE_SYSTEM_PROCESSOR})
if(${CMAKE_CXX_COMPILER} MATCHES "aarch64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
list(APPEND allLib "third_party/mujoco/lin_arm64")
else()
list(APPEND allLib "third_party/mujoco/lin_x64")
endif()
link_directories(${allLib})
file(GLOB C_SOURCES *.c)
file(GLOB CPP_SOURCES *.cpp algorithm/*.cpp common/*.cpp math/*.cpp sim_interface/*.cpp)
file(GLOB HEADER_FILES *.h algorithm/*.h common/*.h math/*.h sim_interface/*.h)
set(SOURCES ${C_SOURCES} ${CPP_SOURCES} ${HEADER_FILES})
#链接库
set(corLibs pinocchio urdfdom_model tinyxml console_bridge jsoncpp quill qpOASES)
set(simLibs glfw3)#mujoco区分x86/arm的方式不一样,在上面按link目录区分
#根据架构,处理连接库
set(sysCoreLibs)
set(sysSimLibs)
if(${CMAKE_CXX_COMPILER} MATCHES "aarch64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
message("linux arm64架构")
foreach(lib ${corLibs})
list(APPEND sysCoreLibs ${lib}_lin_arm64)
endforeach()
foreach(lib ${simLibs})
list(APPEND sysSimLibs ${lib}_lin_arm64)
endforeach()
list(APPEND sysSimLibs dl)#arm 需要 -ldl
else()
message("linux x64架构")
foreach(lib ${corLibs})
list(APPEND sysCoreLibs ${lib}_lin_x64)
endforeach()
foreach(lib ${simLibs})
list(APPEND sysSimLibs ${lib}_lin_x64)
endforeach()
endif()
message(${sysCoreLibs})
#生成控制核心库
add_library(core ${SOURCES})
target_link_libraries(core ${sysCoreLibs} pthread)
#生成仿真可执行文件
add_executable(walk_mpc_wbc demo/walk_mpc_wbc.cpp)
target_link_libraries(walk_mpc_wbc core mujoco ${sysSimLibs} dl)
add_executable(walk_wbc demo/walk_wbc.cpp)
target_link_libraries(walk_wbc core mujoco ${sysSimLibs} dl)
add_executable(jump_mpc demo/jump_mpc.cpp)
target_link_libraries(jump_mpc core mujoco ${sysSimLibs} dl)
add_executable(float_control demo/float_control.cpp)
target_link_libraries(float_control core mujoco ${sysSimLibs} dl)
add_executable(wbc_speed_test demo/walk_wbc_speed_test.cpp)
target_link_libraries(wbc_speed_test core mujoco ${sysSimLibs} dl)
add_executable(walk_wbc_joystick demo/walk_wbc_joystick.cpp)
target_link_libraries(walk_wbc_joystick core mujoco ${sysSimLibs} dl)
add_executable(walk_mpc_wbc_joystick demo/walk_mpc_wbc_joystick.cpp)
target_link_libraries(walk_mpc_wbc_joystick core mujoco ${sysSimLibs} dl)
add_executable(walk_wbc_staircase demo/walk_wbc_staircase.cpp)
target_link_libraries(walk_wbc_staircase core mujoco ${sysSimLibs} dl)