相关疑难解决方法(0)

使用CMake在NVCC中触发C++ 11支持

我用CUDA 7.5运行Ubuntu 15.10.CMmake是v3.2.2,NVCC是7.5版本,v7.5.17; GCC是Ubuntu 5.2.1-22ubuntu2 v5.2.1

在常规项目中触发C++ 11很容易:

project(foo CXX)
set(TARGET foo CMAKE_CXX_STANDARD 11)
Run Code Online (Sandbox Code Playgroud)

我正在定义我的CUDA项目:

find_package(CUDA REQUIRED)
CUDA_ADD_EXECUTABLE(foo ${foo_src} ${foo_hdr} ${foo_cu})
Run Code Online (Sandbox Code Playgroud)

但C++ 11支持不会传播到NVCC.我要补充一下:

list(APPEND CUDA_NVCC_FLAGS "-std=c++11")
Run Code Online (Sandbox Code Playgroud)

这看起来像一个kludge.根据这项任务,最近有明显的工作,但我无法找到结果.

在将项目声明为C++ 11时,如何让CMake自动设置C++ 11标志?

编辑:我已经使用CUDA 8.0和CMake 3.5.1重新回答了这个问题.

文档中, set(CUDA_PROPAGATE_HOST_FLAGS ON)将传播内容CMAKE_CXX_FLAGS,因此以下触发cpp和nvcc的C++ 11:

set (CMAKE_CXX_FLAGS "--std=c++11")
set (CUDA_PROPAGATE_HOST_FLAGS ON)
Run Code Online (Sandbox Code Playgroud)

但是,set(CMAKE_CXX_STANDARD 11)不会产生影响CMAKE_CXX_FLAGS,因此以下内容为C++ 11设备代码提供了编译器错误,因为没有任何内容可以传播:

set (CMAKE_CXX_STANDARD 11)
set (CUDA_PROPAGATE_HOST_FLAGS ON)
Run Code Online (Sandbox Code Playgroud)

我似乎找不到可以避免--std=c++11在CXX或CUDA标志中明确设置的CMake命令的组合.

cuda cmake c++11

11
推荐指数
1
解决办法
4359
查看次数

标签 统计

c++11 ×1

cmake ×1

cuda ×1