文章目录
- [1. 环境准备](#1. 环境准备)
- [2. 项目结构](#2. 项目结构)
- [3. 测试代码编写](#3. 测试代码编写)
- [4. 编译结果](#4. 编译结果)
1. 环境准备
- QT6
- CUDA Toolkit
- cmake >= 3.8
- 编译器支持cuda
-Windows: MSVC(visual studio)或MinGW-w64(有限支持,建议MSVC)
2. 项目结构
cmake
cudaTest/
├──CmakeLists.txt
├──main.cpp
├──kernel.cu
└──kernel.h
3. 测试代码编写
3.1 kernel.h
c
// kernel.h
#ifndef KERNEL_H
#define KERNEL_H
void launch_kernel();
#endif // KERNEL_H
3.2 kernel.cu
c
// kernel.cu
#include "kernel.h"
#include <cuda_runtime.h>
#include <iostream>
__global__ void hello_kernel() {
printf("Hello from GPU thread %d\n", threadIdx.x);
}
void launch_kernel() {
hello_kernel<<<1, 10>>>();
cudaDeviceSynchronize();
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess) {
std::cerr << "CUDA error: " << cudaGetErrorString(err) << std::endl;
}
}
3.3 main.cpp
cpp
// main.cpp
#include <QApplication>
#include <QLabel>
#include "kernel.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
launch_kernel(); // 调用 CUDA 内核
QLabel label("Hello Qt + CUDA!");
label.show();
return app.exec();
}
3.4 CMakeLists.txt
cmake
cmake_minimum_required(VERSION 3.24) # 推荐 3.24+ 以获得更好的 CUDA 支持
##############################【修改1】新增cuda编译环境##########################
project(MyQtCudaApp LANGUAGES CXX CUDA)
###############################################################################
# 启用 Qt6
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
# 查找 Qt6 组件
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Gui)
##############################【修改2】新增cuda编译环境##########################
# 查找 CUDA(通常 CMake 自动处理,但显式声明更清晰)
enable_language(CUDA)
# 设置 CUDA 架构(根据你的 GPU 调整)
set(CMAKE_CUDA_ARCHITECTURES "75;86") # 例如:RTX 20xx=75, RTX 30xx=86
###############################################################################
# 添加可执行文件(包含 .cpp 和 .cu)
add_executable(MyQtCudaApp
main.cpp
kernel.cu
)
# 链接 Qt6 库
target_link_libraries(MyQtCudaApp PRIVATE
Qt6::Core
Qt6::Widgets
Qt6::Gui
)
# 设置 C++ 标准
set_target_properties(MyQtCudaApp PROPERTIES
CXX_STANDARD 17
CUDA_STANDARD 17
)
##############################【修改3】可选,新增cuda编译环境#####################
# 可选:设置 NVCC 编译选项
target_compile_options(MyQtCudaApp PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:--extended-lambda>
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
)
###############################################################################
4. 编译结果
- 代码可正常编辑

- .cu代码会出现部分假错误,目前解决办法未继续探索(据查,是cuda和qt兼容性弱的原因)
拟解决办法:在visual studio上编写cuda相关代码,验证正确后带入qt写界面进行测试
