【OpenREALM学习笔记:8】CUDA和C++混合编程CMakelists编写的简明样例

11 篇文章 0 订阅

在进行CUDA和C++混合编程时,经常会遇到编写CMakelists的情况,总结一个小编写样例,供参考。

cmake_minimum_required(VERSION 3.28)    # CMake最低版本号

set(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc")     # 显式的指定cuda编译器
set(CMAKE_CUDA_ARCHITECTURES OFF)                       # 让CMake和nvcc自动检测当前可用的GPU架构

project(SemiGlobalMatchingGPU LANGUAGES CUDA CXX)       # 指明编程语言为CXX和CUDA

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)                   # 生成一个名为compile_commands.json
# 的文件,这个文件将编译命令作为JSON对象输出。这个设置通常用于与Visual Studio等集成开发环境(IDE)
# 一起使用,以便于管理和调试编译过程中的各种选项和参数。
set(CMAKE_CXX_STANDARD 17)                              # 用于指定C++标准的版本
set(CMAKE_CXX_STANDARD_REQUIRED ON)                     # 如果没有找到指定版本的C++编译器,将发出错误
set(CMAKE_CUDA_STANDARD 17)                             # 用于指定CUDA编译器使用的C++版本
set(CMAKE_CUDA_STANDARD_REQUIRED ON)                    # 如果没有找到指定版本的编译器,发出错误

if (CMAKE_CUDA_COMPILER)
    enable_language(CUDA)                               # 告诉系统要使用CUDA语言,绝不可以省略
    message(STATUS "CUDA support enabled.")

    if (POLICY CMP0146)                                 # 忽略CMP0146警告
        cmake_policy(SET CMP0146 OLD)
    endif ()
    include(FindCUDA)
    set(CUDA_ARCH_LIST Auto CACHE STRING "List of CUDA architectures (e.g. Pascal, Volta, etc)\
     or compute capability version (6.1, 7.0, etc) to generate code for. Set to Auto for \
     automatic detection (default).")
    cuda_select_nvcc_arch_flags(CUDA_ARC_FLAGS ${CUDA_ARC_LIST})
    list(APPEND CUDA_NVCC_FLAGS ${CUDA_ARCH_FLAGS})
else ()
    message(WARNING "CUDA Support disable.")
endif ()

find_package(OpenCV 3.3.1 REQUIRED)                     # 引入OpenCV并指定版本为3.3.1

include_directories(include)                            # 添加头文件搜索路径

file(GLOB_RECURSE SRC ./src/*.cpp ./src/*.cu)           # 寻找./src下面所有.cpp和.cu为后缀的
# 源文件,并保存到SRC变量中

add_executable(${PROJECT_NAME} main.cpp ${SRC})         # 编译SRC变量存储的源文件,编译生成目标文件名为项目名称

#target_link_libraries(${PROJECT_NAME} XXXXXX)           # 链接目标库



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值