QT5.14 WIN11 配置CMake+MSVC2017

1. 下载QT : 66-Win版教程等2个文件官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘2.  安装QT (勾选MSVC2017)

3. 下载 和 安装CMake :  百度网盘 请输入提取码

4.  安装WIN10 SDK : Windows SDK 和模拟器存档 | Microsoft Developer

5. 安装VS2022 , 勾选这两个

6.  确认自动生成QT Debugger:

7. 配置QT Compiler (手工添加这两个):

8. 配置TOOL KIT

9. 创建一个CMake 项目检验

参考:

 37.Qt Creator安装及配置CMake编译器的方法 - Ubuntu1804 - 博客园

QT5构建套件检测不到MSVC2017解决方法-腾讯云开发者社区-腾讯云

<think>我们正在配置Qt5.14与CUDA11.6的开发环境,并且用户要求使用CMakeLists.txt进行配置。参考之前的引用,特别是引用[1]和引用[4]中提到的方法,我们可以通过CMake来组织项目,同时编译CPP和CUDA文件。步骤概述:1.确保已安装CUDA Toolkit11.6和Qt5.14,并且CMake版本至少为3.8(推荐3.10以上)。2.CMakeLists.txt中启用CUDA语言支持,并设置CUDA的路径和编译选项。3.将CUDA源文件(.cu)添加到项目中,并设置它们需要由NVCC编译。4.链接CUDA运行时库(cudart)以及其他可能需要的CUDA库(如cublas、cufft等)。5.配置Qt5.14,确保CMake能够找到Qt的库。详细步骤:1.创建CMakeLists.txt文件,并设置最低CMake版本和项目名称:```cmakecmake_minimum_required(VERSION3.10)project(MyQtCudaProjectLANGUAGES CXX CUDA)#注意这里添加了CUDA语言```2.设置C++标准并查找Qt5组件(例如,如果你的Qt项目需要Core和Widgets):```cmakeset(CMAKE_CXX_STANDARD11)set(CMAKE_CXX_STANDARD_REQUIREDON)#查找Qt5,需要指定你使用的组件find_package(Qt5 COMPONENTSCore Widgets REQUIRED)```3.设置CUDA Toolkit的路径(通常CMake会自动找到,但可以指定):```cmake#可选:如果CMake找不到CUDA,可以手动设置# set(CUDA_TOOLKIT_ROOT_DIR "C:/Program Files/NVIDIAGPU ComputingToolkit/CUDA/v11.6")```4.添加可执行文件,并包含源文件(包括.cpp和.cu文件):```cmake#添加可执行文件add_executable(${PROJECT_NAME}main.cppmainwindow.cpp#...其他cpp文件kernel.cu#CUDA源文件)```5.链接Qt5的库和CUDA的库:```cmake#链接Qt5库target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets)#链接CUDA运行时库target_link_libraries(${PROJECT_NAME} ${CUDA_LIBRARIES})#如果需要其他CUDA库,如cublastarget_link_libraries(${PROJECT_NAME} ${CUDA_cublas_LIBRARY})```6.设置CUDA的编译选项(例如计算能力):```cmake#设置CUDA架构(根据你的GPU调整)set(CUDA_ARCHITECTURES "75")#例如75代表Turing架构(RTX20系列)```7.对于Windows平台,可能需要设置一些额外的链接选项,因为CUDA库通常为动态链接库(.dll),需要将CUDA的bin目录添加到系统路径,或者在CMake中复制dll到输出目录。8.配置Qt的资源文件(.qrc)和元对象编译(moc)等,CMakeQt5模块会自动处理,但需要确保源文件被正确包含。9.生成项目:在构建目录中运行cmake,指定生成器(如VisualStudio2019或MinGW)和Qt的路径(如果需要)。示例CMakeLists.txt完整内容(简化版):```cmakecmake_minimum_required(VERSION3.10)project(QtCudaDemoLANGUAGES CXX CUDA)set(CMAKE_CXX_STANDARD11)set(CMAKE_CXX_STANDARD_REQUIREDON)#查找Qt5find_package(Qt5COMPONENTS CoreWidgetsREQUIRED)#设置CUDA架构set(CUDA_ARCHITECTURES"75"CACHESTRING"CUDA architectures")#添加可执行文件add_executable(QtCudaDemomain.cppmainwindow.cppmainwindow.hkernel.cu)#自动调用moctarget_link_libraries(QtCudaDemo Qt5::Core Qt5::Widgets)#链接CUDA库target_link_libraries(QtCudaDemo CUDA::cudart)#如果使用其他CUDA库,例如cublas#find_package(CUDAToolkitREQUIRED)# target_link_libraries(QtCudaDemoCUDA::cublas)```注意:CMake3.18之后,对CUDA的支持更好,推荐使用`find_package(CUDAToolkit)`来查找CUDA Toolkit,然后使用`CUDA::`命名空间的目标。对于CUDA源文件,CMake会自动调用NVCC进行编译,并处理与C++文件的链接。问题排查: -如果CMake找不到CUDA,可以手动设置`CUDA_TOOLKIT_ROOT_DIR`。-确保Qt的路径被正确设置(例如,通过设置`CMAKE_PREFIX_PATH`指向Qt的安装目录)。 -在Windows上,确保生成器与Qt的编译器匹配(如使用MSVC编译的Qt,则生成器应为Visual Studio;MinGW编译的Qt则使用MinGW生成器)。这样配置后,就可以在Qt项目中混合使用C++和CUDA代码了。引用说明:参考引用[1]中提到的CMake组织项目,以及引用[4]中关于CMake同时编译cpp和cu文件的方法,我们实现了上述配置。最后,生成相关问题:</think>### 在Qt 5.14中通过CMake配置CUDA 11.6开发环境 以下是完整的配置步骤(基于Windows/Linux通用方案): #### 1. **基础CMakeLists结构** ```cmake cmake_minimum_required(VERSION 3.18) # CUDA 11.6需要CMake≥3.18 project(MyQtCudaProject LANGUAGES CXX CUDA # 关键:启用CUDA语言支持 VERSION 1.0) # 设置C++标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找Qt5核心组件 find_package(Qt5 COMPONENTS Core Widgets REQUIRED) # 根据需求添加其他模块 ``` #### 2. **CUDA专用配置** ```cmake # 启用CUDA Toolkit并指定版本 find_package(CUDAToolkit 11.6 REQUIRED) # 设置GPU计算能力(根据实际显卡调整) set(CUDA_ARCHITECTURES "75" CACHE STRING "GPU架构") # RTX 20系列=75, RTX 30系列=86 # 添加CUDA编译选项 target_compile_options(${PROJECT_NAME} PRIVATE $<$<COMPILE_LANGUAGE:CUDA>: --use_fast_math # 启用快速数学运算 -Xcompiler=-Wall # 传递警告选项给主机编译器 > ) ``` #### 3. **项目配置与链接** ```cmake # 添加可执行文件(包含CUDA源文件) add_executable(${PROJECT_NAME} main.cpp MainWindow.cpp kernel.cu # CUDA核函数文件 ) # 链接Qt库 target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Widgets ) # 链接CUDA库 target_link_libraries(${PROJECT_NAME} PRIVATE CUDA::cudart # CUDA运行时库 CUDA::cublas # 按需添加其他库 ) ``` #### 4. **目录结构示例 ``` MyProject/ ├── CMakeLists.txt ├── main.cpp ├── MainWindow.{h,cpp} └── cuda/ ├── kernel.cu # CUDA核函数实现 └── cuda_utils.h # CUDA辅助函数 ``` #### 5. **混合代码示例 **kernel.cu** (CUDA核函数): ```cuda #include <cuda_runtime.h> __global__ void vectorAdd(const float* A, const float* B, float* C, int numElements) { int i = blockDim.x * blockIdx.x + threadIdx.x; if (i < numElements) C[i] = A[i] + B[i]; } // 包装函数供C++调用 extern "C" void launchVectorAdd(const float* A, const float* B, float* C, int n) { dim3 blockSize(256); dim3 gridSize((n + blockSize.x - 1) / blockSize.x); vectorAdd<<<gridSize, blockSize>>>(A, B, C, n); } ``` **main.cpp** (Qt调用CUDA): ```cpp #include "MainWindow.h" #include <cuda_runtime.h> extern "C" void launchVectorAdd(const float*, const float*, float*, int); int main(int argc, char *argv[]) { QApplication a(argc, argv); // CUDA内存分配 const int N = 10000; float *d_A, *d_B, *d_C; cudaMalloc(&d_A, N*sizeof(float)); cudaMalloc(&d_B, N*sizeof(float)); cudaMalloc(&d_C, N*sizeof(float)); // 执行CUDA核函数 launchVectorAdd(d_A, d_B, d_C, N); MainWindow w; w.show(); return a.exec(); } ``` #### 6. **构建命令 ```bash # 生成构建系统 mkdir build && cd build cmake .. -DCMAKE_PREFIX_PATH="C:/Qt/5.14.2/msvc2017_64" # Windows指定Qt路径 # 或 Linux: cmake .. -DCMAKE_PREFIX_PATH="/opt/Qt/5.14.2/gcc_64" # 编译项目 cmake --build . --config Release # 或 Debug ``` #### 关键配置说明: 1. **架构兼容性** 在`CUDA_ARCHITECTURES`中指定正确的GPU计算能力: - NVIDIA Tesla V100: `70` - RTX 2080: `75` - RTX 3080: `86` 2. **调试支持** 在CMake中启用调试符号: ```cmake set(CMAKE_CUDA_FLAGS_DEBUG "-G -g") # 生成设备调试信息 ``` 3. **多平台支持** 使用CMake生成器表达式处理平台差异: ```cmake target_link_libraries(${PROJECT_NAME} PRIVATE $<$<PLATFORM_ID:Windows>:CUDA::cudart_static> $<$<PLATFORM_ID:Linux>:CUDA::cudart> ) ``` 4. **Qt Creator集成** 在Qt Creator中: - 打开`CMakeLists.txt`作为项目文件 - 在`项目设置 > CMake`中添加CUDA路径: ``` CUDA_TOOLKIT_ROOT_DIR=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6 ``` > 验证配置:运行项目后检查`cudaGetLastError()`返回值,0表示成功[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值