cmake_minimum_required(VERSION 3.18) project(json_cuda LANGUAGES CUDA) add_executable(json_cuda json_cuda.cu) target_include_directories(json_cuda PRIVATE ../../include) # nvcc added C++20 support in CUDA 12.0 and C++17 in CUDA 11.0; pick the # newest standard the detected compiler actually supports (see #3907) # instead of hard-requiring one standard for every CUDA version. if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0) set(json_cuda_std 20) elseif(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0) set(json_cuda_std 17) else() set(json_cuda_std 11) endif() target_compile_features(json_cuda PUBLIC cuda_std_${json_cuda_std}) set_target_properties(json_cuda PROPERTIES CUDA_EXTENSIONS OFF CUDA_STANDARD_REQUIRED ON )