2025最新版使用VSCode和CMake图形化编译调试Cuda C++程序(保姆级教学)

VSCode +CMake 简直就是C++程序开发者的福音,无论是进行Qt开发,音视频开发,后端程序开发,Cuda开发,CMake都是神一样的存在。

首先确保你已经安装好了Cuda Toolkit,比如我的是Cuda 12.3。

确保你已经配置了环境变量:

VSCode下载好插件:

CMakeLists.txt如下:

cpp 复制代码
cmake_minimum_required(VERSION 3.18)
project(CudaTest LANGUAGES CXX CUDA)
# 设置CUDA标准
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
#设置CUDA架构
set(CMAKE_CUDA_ARCHITECTURES "75")
# 添加CUDA头文件
include_directories("$ENV{CUDA_PATH}/include")
# 添加可执行文件
add_executable(cuda_test  cuda_kernel.cu)

main.cu如下:

cpp 复制代码
#include <stdio.h>
#include <cuda_runtime.h>

// CUDA核函数:执行向量加法
__global__ void vectorAdd(const float *a, const float *b, float *c, int n) {
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    if (idx < n) {
        c[idx] = a[idx] + b[idx];
    }
}
// 验证GPU计算结果
void verifyResult(float *a, float *b, float *c, int n) {
    for (int i = 0; i < n; i++) {
        if (fabs(a[i] + b[i] - c[i]) > 1e-5) {
            printf("计算结果错误!\n");
            return;
        }
    }
    printf("计算结果正确!\n");
}
int main() {
    const int n = 1000;
    const int size = n * sizeof(float);
    float *h_a = (float*)malloc(size);
    float *h_b = (float*)malloc(size);
    float *h_c = (float*)malloc(size);
    for (int i = 0; i < n; i++) {
        h_a[i] = rand() / (float)RAND_MAX;
        h_b[i] = rand() / (float)RAND_MAX;
    }
    float *d_a, *d_b, *d_c;
    cudaMalloc(&d_a, size);
    cudaMalloc(&d_b, size);
    cudaMalloc(&d_c, size);
    cudaMemcpy(d_a, h_a, size, cudaMemcpyHostToDevice);
    cudaMemcpy(d_b, h_b, size, cudaMemcpyHostToDevice);
    int threadsPerBlock = 256;
    int blocksPerGrid = (n + threadsPerBlock - 1) / threadsPerBlock;
    vectorAdd<<<blocksPerGrid, threadsPerBlock>>>(d_a, d_b, d_c, n);
    cudaMemcpy(h_c, d_c, size, cudaMemcpyDeviceToHost);
    verifyResult(h_a, h_b, h_c, n);
    cudaFree(d_a);
    cudaFree(d_b);
    cudaFree(d_c);
    free(h_a);
    free(h_b);
    free(h_c);
    return 0;
}

创建一个空文件夹:

按下Ctrl shift P:点击CMake:Configure。

选择工具包,必须选择VS2022的amd64架构,不能用mingw!

build文件生成完毕:

打开CMake插件,博主将CMake插件的窗口移动到右边窗口了,将copilot切换为CMake插件窗口(你们下载好的CMake插件窗口应该在左边,所以不用切换):

点击设置生成目标:

选择main.exe:

点击运行:

编译完成:

输出结果:

至此VSCode加CMake编译cuda程序配置完毕。

相关推荐
大白的编程日记.1 小时前
【计算机基础理论知识】C++篇(二)
开发语言·c++·学习
C语言小火车1 小时前
野指针:C/C++内存管理的“幽灵陷阱”与系统化规避策略
c语言·c++·学习·指针
凤年徐1 小时前
【数据结构】时间复杂度和空间复杂度
c语言·数据结构·c++·笔记·算法
踏莎行hyx2 小时前
使用langchain连接llama.cpp部署的本地deepseek大模型开发简单的LLM应用
c++·ai·langchain·大模型·llama.cpp·deepseek
山河木马2 小时前
前端学C++可太简单了:双冒号 :: 操作符
前端·javascript·c++
乌萨奇也要立志学C++3 小时前
【C++详解】STL-list模拟实现(深度剖析list迭代器,类模板未实例化取嵌套类型问题)
c++·list
闻缺陷则喜何志丹3 小时前
【前缀和 BFS 并集查找】P3127 [USACO15OPEN] Trapped in the Haybales G|省选-
数据结构·c++·前缀和·宽度优先·洛谷·并集查找
序属秋秋秋4 小时前
《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
开发语言·c++·笔记·学习
十秒耿直拆包选手12 小时前
Qt:主窗体(QMainwindow)初始化注意事项
c++·qt
霖0013 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发