cmake_minimum_required(VERSION 3.20) project(cleveldb CUDA) set(CMAKE_CUDA_STANDARD 14) include(GNUInstallDirs) add_library(cleveldb "") target_sources( cleveldb PUBLIC "headers/arena.cuh" "headers/arena.cu" "headers/random.h" ) function(cleveldb_test test_file) get_filename_component(test_target_name "${test_file}" NAME_WE) add_executable("${test_target_name}" "") target_sources(arena_test PRIVATE "${test_file}") target_link_libraries("${test_target_name}" cleveldb) add_test(NAME "${test_target_name}" COMMAND "${test_target_name}") endfunction(cleveldb_test) add_executable(clevelmain main.cu cleveldb) set_target_properties(clevelmain PROPERTIES CUDA_SEPARABLE_COMPILATION ON) cleveldb_test(tests/arena_test.cu)