cmake_minimum_required(VERSION 3.5) project(depth_anything) # Compile options if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # Library find_package(OpenCV REQUIRED) # CUDA include(CheckLanguage) check_language(CUDA) find_package(CUDA REQUIRED) if(CMAKE_CUDA_COMPILER) enable_language(CUDA) else() message(WARNING "CUDA is not found. preprocess acceleration using CUDA will not be available.") endif() if(CUDA_FOUND) find_library(CUBLAS_LIBRARIES cublas HINTS ${CUDA_TOOLKIT_ROOT_DIR}/lib64 ${CUDA_TOOLKIT_ROOT_DIR}/lib ) if(CUDA_VERBOSE) message(STATUS "CUDA is available!") message(STATUS "CUDA Libs: ${CUDA_LIBRARIES}") message(STATUS "CUDA Headers: ${CUDA_INCLUDE_DIRS}") endif() set(CUDA_AVAIL ON) else() message(STATUS "CUDA NOT FOUND") set(CUDA_AVAIL OFF) endif() # TensorRT modules find_library(NVINFER NAMES nvinfer) find_library(NVONNXPARSER nvonnxparser) find_library(NVINFER_PLUGIN NAMES nvinfer_plugin) if(NVINFER AND NVONNXPARSER AND NVINFER_PLUGIN) if(CUDA_VERBOSE) message(STATUS "TensorRT is available!") message(STATUS "NVINFER: ${NVINFER}") message(STATUS "NVPARSERS: ${NVPARSERS}") message(STATUS "NVINFER_PLUGIN: ${NVINFER_PLUGIN}") message(STATUS "NVONNXPARSER: ${NVONNXPARSER}") endif() set(TRT_AVAIL ON) else() message(STATUS "TensorRT is NOT Available") set(TRT_AVAIL OFF) endif() # try to find the CUDNN module find_library(CUDNN_LIBRARY NAMES libcudnn.so${__cudnn_ver_suffix} libcudnn${__cudnn_ver_suffix}.dylib ${__cudnn_lib_win_name} PATHS $ENV{LD_LIBRARY_PATH} ${__libpath_cudart} ${CUDNN_ROOT_DIR} ${PC_CUDNN_LIBRARY_DIRS} ${CMAKE_INSTALL_PREFIX} PATH_SUFFIXES lib lib64 bin DOC "CUDNN library." ) if(CUDNN_LIBRARY) if(CUDA_VERBOSE) message(STATUS "CUDNN is available!") message(STATUS "CUDNN_LIBRARY: ${CUDNN_LIBRARY}") endif() set(CUDNN_AVAIL ON) else() message(STATUS "CUDNN is NOT Available") set(CUDNN_AVAIL OFF) endif() # Dependencies find_package(ament_cmake_auto REQUIRED) ament_auto_find_build_dependencies() # Targets include_directories( ${OpenCV_INCLUDE_DIRS} ${CUDA_INCLUDE_DIRS} ) ament_auto_add_library(depth_anything_node_component SHARED src/depth_anything_node/depth_anything_node.cpp src/tensorrt_depth_anything/tensorrt_depth_anything.cpp src/tensorrt_common/tensorrt_common.cpp src/tensorrt_common/simple_profiler.cpp ) target_link_libraries(depth_anything_node_component ${NVINFER} ${NVINFER_PLUGIN} ${NVONNXPARSER} ${CUDA_LIBRARIES} ${CUBLAS_LIBRARIES} ${CUDNN_LIBRARY} ) rclcpp_components_register_node(depth_anything_node_component PLUGIN "depth_anything::DepthAnythingNode" EXECUTABLE depth_anything_node ) # Tests if(BUILD_TESTING) list(APPEND AMENT_LINT_AUTO_EXCLUDE ament_cmake_uncrustify) find_package(ament_lint_auto REQUIRED) ament_lint_auto_find_test_dependencies() endif() # Package ament_auto_package( INSTALL_TO_SHARE data config launch )