电科2024夏令营学习规划2-学习cmake的基本用法

学习过程:通过安装文件夹里面的CMake-Practice.pdf来完成对cmake(或者自己在网上搜寻相关的知识)

任务要求:

在学习完cmake的内容后,对我们提供的cmake文件添加注释

CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
PROJECT(ZED)

option(LINK_SHARED_ZED "Link with the ZED SDK shared executable" ON)
option(ENABLE_CUDA "" ON)

if (NOT LINK_SHARED_ZED AND MSVC)
    message(FATAL_ERROR "LINK_SHARED_ZED OFF : ZED SDK static libraries not available on Windows")
endif()

SET(EXECUTABLE_OUTPUT_PATH ".")
SET(CUDA_NVCC_FLAGS -gencode arch=compute_53,code=sm_53)

set(CMAKE_CXX_FLAGS "-lstdc++ -pthread" )
#set(CMAKE_BUILD_TYPE Release)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "-std=c++17 -Wall")
set(CMAKE_CXX_FLAGS_RELEASE  "-std=c++17 -O3")

find_package(ZED 3 REQUIRED)
find_package(OpenCV REQUIRED)
find_package(CUDA 11.4)
find_package(Threads REQUIRED)
find_package(PCL 1.10 REQUIRED COMPONENTS common io visualization)
find_package(PCL 1.10 REQUIRED)

IF(NOT WIN32)
    add_definitions(-Wno-format-extra-args)
    SET(SPECIAL_OS_LIBS "pthread" "X11")
ENDIF()

include_directories(${CUDA_INCLUDE_DIRS})
include_directories(${ZED_INCLUDE_DIRS})
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(${PCL_INCLUDE_DIRS})
include_directories(include)

link_directories(${ZED_LIBRARY_DIR})
link_directories(${CUDA_LIBRARY_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

LIST(APPEND CUDA_NVCC_FLAGS -std=c++14;-O2)
LIST(APPEND CUDA_NVCC_FLAGS -Xcompiler;-fPIC)

SET(CUDA_PROPAGATE_HOST_FLAGS OFF)

LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_50,code=sm_50)
LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_60,code=sm_60)

FILE(GLOB_RECURSE SRC_FILES src/*.cpp)
FILE(GLOB_RECURSE HDR_FILES include/*.hpp)

CUDA_ADD_EXECUTABLE(run main.cpp ${HDR_FILES} ${SRC_FILES})
add_definitions(-std=c++14 -O2)

if (LINK_SHARED_ZED)
    SET(ZED_LIBS ${ZED_LIBRARIES} ${CUDA_CUDA_LIBRARY} ${CUDA_CUDART_LIBRARY})
else()
    SET(ZED_LIBS ${ZED_STATIC_LIBRARIES} ${CUDA_CUDA_LIBRARY} ${CUDA_LIBRARY})
endif()

target_link_libraries(run ${ZED_LIBS})
target_link_libraries(run ${OpenCV_LIBS})
target_link_libraries(run Threads::Threads)
target_link_libraries(run ${PCL_LIBRARIES})

结果反馈

一组

二组

三组


CMake_Practice.pdf (264.3 KB)

4 个赞

哇,用写注释去检验学习成果,这个办法好!