-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
133 lines (114 loc) · 3.34 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
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
cmake_minimum_required(VERSION 3.8)
project(percept)
# Set CUDA architecture policy
cmake_policy(SET CMP0104 NEW)
set(CMAKE_CUDA_ARCHITECTURES 75) # For RTX 20xx series, adjust if needed
# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()
# if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# add_compile_options(-Wall -Wextra -Wpedantic)
# endif()
# Setup CUDA/NVCC
set(CMAKE_C_COMPILER "/usr/lib/nvidia-cuda-toolkit/bin/gcc" CACHE PATH "" FORCE)
set(CMAKE_CXX_COMPILER "/usr/lib/nvidia-cuda-toolkit/bin/g++" CACHE PATH "" FORCE)
set(CUDA_DIR "/usr/lib/nvidia-cuda-toolkit")
set(CUDA_NVCC_FLAGS "-arch=sm_75" CACHE STRING "nvcc flags" FORCE)
set (CUDA_VERBOSE_BUILD ON CACHE BOOL "nvcc verbose" FORCE)
find_package(CUDA REQUIRED)
enable_language(CUDA)
add_definitions(-w -DUSE_CUDA)
# Find dependencies
find_package(ament_cmake REQUIRED)
find_package(ament_cmake_python REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclpy REQUIRED)
find_package(std_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(diagnostic_msgs REQUIRED)
find_package(message_filters REQUIRED)
find_package(visualization_msgs REQUIRED)
# find_package(percept_interfaces REQUIRED
find_package(percept_interfaces)
# Find Python from Conda environment
execute_process(
COMMAND ${CMAKE_COMMAND} -E env python -c
"import sys; print(sys.executable)"
OUTPUT_VARIABLE PYTHON_EXECUTABLE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Set the Python executable
set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE})
message(STATUS "Using Python from: ${PYTHON_EXECUTABLE}")
# Set the Python include directory
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"from sysconfig import get_paths as gp; print(gp()['include'])"
OUTPUT_VARIABLE PYTHON_INCLUDE_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
include_directories(${PYTHON_INCLUDE_DIR})
# Set the Python library directory
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c
"from sysconfig import get_paths as gp; print(gp()['stdlib'])"
OUTPUT_VARIABLE PYTHON_LIB_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
link_directories(${PYTHON_LIB_DIR})
# Install Python modules
ament_python_install_package(${PROJECT_NAME}
PACKAGE_DIR src
)
# Install Python executables
install(PROGRAMS
src/real_pipeline.py
src/utils/static_tf_publisher.py
src/service_tester.py
src/sim_stream.py
src/scene_loader.py
DESTINATION lib/${PROJECT_NAME}
)
# Install launch and config files
install(DIRECTORY
launch
config
assets
rviz2
DESTINATION share/${PROJECT_NAME}
)
# cpp executable
add_executable(fields_computer
src/fields_computer.cpp
src/kernels/NearestObstacleDistance.cu
src/kernels/ObstacleHeuristicCircForce.cu
src/kernels/VelocityHeuristicCircForce.cu
src/kernels/GoalObstacleHeuristicCircForce.cu
src/kernels/GoalHeuristicCircForce.cu
src/kernels/RandomHeuristicCircForce.cu
)
target_include_directories(fields_computer
PRIVATE include
)
ament_target_dependencies(fields_computer
rclcpp
std_msgs
sensor_msgs
geometry_msgs
visualization_msgs
percept_interfaces
)
target_link_libraries(fields_computer
${CUDA_LIBRARIES}
)
install(TARGETS
fields_computer
DESTINATION lib/${PROJECT_NAME}
)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
endif()
ament_package()