CMake 无法设置 CUDA 标准 c++17
CMake cannot set CUDA standard c++17
我正在使用 CMake 配置 CUDA/C++ 项目。使用 NVCC 编译的一些文件需要 C++ 17 功能。要启用这些,我会使用:
cmake_minimum_required(VERSION 3.19)
project(RISA LANGUAGES CXX CUDA)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CUDA_STANDARD 17)
这会导致错误消息:
Target "RISA" requires the language dialect "CUDA17" (with compiler extensions), but CMake does not know the compile flags to use to enable it.
仔细检查 CMAKE_CUDA_COMPILE_FEATURES
变量显示 cuda_std_03 cuda_std_11 cuda_std_14
。出于某种原因,CMake 似乎不了解 C++14 之后关于 CUDA 的任何信息。
我 运行 ubuntu 20.04
- NVCC 11.2
- 海湾合作委员会 10.1.0
- CMake 3.19.6
如何使用此设置配置和编译 C++17?
我知道 问题 - 但是仅使用 C++14 编译 cuda 文件的解决方案对我来说不够。
事实证明,CMake 没有使用正确的 nvcc
二进制文件。
就我而言,我的系统上有两个版本的 nvcc:
nvcc v10.1.243
在 /usr/bin
和
nvcc v11.2.152
在 /usr/local/cuda-11.2/bin
在我的 CMake 配置中,
CUDA_NVCC_EXECUTABLE
被设置为 /usr/local/cuda-11.2/bin
,但是
CMAKE_CUDA_COMPILER
在 /usr/bin
中设置为旧版本。
将 CMAKE_CUDA_COMPILER
设置为正确的路径后,CMake 能够检测到 nvcc 11.2.152
并可以应用 C++17 标准。
我正在使用 CMake 配置 CUDA/C++ 项目。使用 NVCC 编译的一些文件需要 C++ 17 功能。要启用这些,我会使用:
cmake_minimum_required(VERSION 3.19)
project(RISA LANGUAGES CXX CUDA)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CUDA_STANDARD 17)
这会导致错误消息:
Target "RISA" requires the language dialect "CUDA17" (with compiler extensions), but CMake does not know the compile flags to use to enable it.
仔细检查 CMAKE_CUDA_COMPILE_FEATURES
变量显示 cuda_std_03 cuda_std_11 cuda_std_14
。出于某种原因,CMake 似乎不了解 C++14 之后关于 CUDA 的任何信息。
我 运行 ubuntu 20.04
- NVCC 11.2
- 海湾合作委员会 10.1.0
- CMake 3.19.6
如何使用此设置配置和编译 C++17?
我知道
事实证明,CMake 没有使用正确的 nvcc
二进制文件。
就我而言,我的系统上有两个版本的 nvcc:
nvcc v10.1.243
在/usr/bin
和nvcc v11.2.152
在/usr/local/cuda-11.2/bin
在我的 CMake 配置中,
CUDA_NVCC_EXECUTABLE
被设置为/usr/local/cuda-11.2/bin
,但是CMAKE_CUDA_COMPILER
在/usr/bin
中设置为旧版本。
将 CMAKE_CUDA_COMPILER
设置为正确的路径后,CMake 能够检测到 nvcc 11.2.152
并可以应用 C++17 标准。