问题是,如果通过它传递,-std=c++11则不会添加到nvcc构建命令add_definitions().从FindCUDA cmake文档:
传递到带有-D或/ D的add_definitions的标志将传递给nvcc.
其他选项如未-std=c++11传递给nvcc.
您可以c++11通过将其添加到全局来全局启用CUDA_NVCC_FLAGS
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11" )
Run Code Online (Sandbox Code Playgroud)
或者在每个目标级别上
cuda_add_executable(opencv opencv.cu OPTIONS -std=c++11)
Run Code Online (Sandbox Code Playgroud)
正如talonmies在评论中指出的那样:如果您只需要运行时API中的函数,cudaMemcpy()就可以在普通的C++中使用它们 - 文件(不需要.cu扩展名).然后,您需要包含cuda_runtime_api.h并链接到cuda运行时库cudart.(确保cuda include目录位于include-path和库路径中的库中,如果用于nvcc编译,则会自动处理.)
设置为较新版本的CMake的C++标准的正确方法在此说明:在NVCC触发C++ 11支持通过CMake
| 归档时间: |
|
| 查看次数: |
7735 次 |
| 最近记录: |