ubuntu20.04系统中,正常使用nvcc编译cuda代码用得还是很方便快乐的。
但有一天想写一个像模像样的工程的时候,尝试用c++调用cuda代码的时候,却出现了下面这样的报错。
In file included from /usr/include/cuda_runtime.h:83,
from <command-line>:
/usr/include/crt/host_config.h:138:2: error: #error -- unsupported GNU version! gcc versions later than 8 are not supported!
138 | #error -- unsupported GNU version! gcc versions later than 8 are not supported!
| ^~~~~
CMake Error at main_generated_cudaHeader.cu.o.cmake:220 (message):
这是因为在写CMakeLists.txt的时候使用了cuda_add_library或者cuda_add_executable.
根据前面这篇文章的描述,3.9版本以上的CMakeLists.txt就不再需要用cuda_add_library了,像普通的c++代码一样,仍然使用add_library和add_executable就可以。
https://zhuanlan.zhihu.com/p/105721133
需要做特殊处理的是需要在project语句上指定编程语言
project(projName CXX CUDA)
下面是CMakeLists.txt写法的简单例子。
#cmake的最小版本
cmake_minimum_required(VERSION 3.2)
#工程名称
project(main CXX CUDA)
#添加库目录
include_directories(./cudaFolder)
#添加cuda的子目录
add_subdirectory(cudaFolder)
#添加可执行文件
add_executable(main main.cpp)
#链接cuda的库目录
target_link_libraries(main cudaLib)
cudaFolder里面的CMakeLists.txt
#寻找cuda的库
find_package(CUDA REQUIRED)
#添加cuda函数的静态库
add_library(cudaLib STATIC cudaSource.cu)