project(MemoryProcessing) cmake_minimum_required(VERSION 3.19) option(INCLUDE_CUDA "GPU build in mode" OFF) option(CXX23_STACKTRACE "Enable C++23 stacktrace" OFF) enable_language(CXX) if(CXX23_STACKTRACE) set(CMAKE_CXX_STANDARD 23) else(CXX23_STACKTRACE) set(CMAKE_CXX_STANDARD 11) endif(CXX23_STACKTRACE) message(STATUS "memory processing: GPU build in mode is ${INCLUDE_CUDA}") if(INCLUDE_CUDA) enable_language(CUDA) include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) # -DCMAKE_CUDA_ARCHITECTURES=native -- Compile for the architecture(s) of the host's GPU(s) endif(INCLUDE_CUDA) set(SOURCES_CXX src/MemoryProcessing.cpp ) set(HEADERS_CXX include/MemoryProcessing.h include/TemplateParameters.h ) if(INCLUDE_CUDA) set(SOURCES_CU src/MemoryProcessing.cu ) set(HEADERS_CU include/MemoryProcessing.cuh ) endif(INCLUDE_CUDA) set(SOURCES ${SOURCES_CU} ${SOURCES_CXX}) set(HEADERS ${HEADERS_CU} ${HEADERS_CXX}) add_library(memproc STATIC ${HEADERS} ${SOURCES}) if(CXX23_STACKTRACE) target_link_libraries(memproc PUBLIC -lstdc++_libbacktrace) endif(CXX23_STACKTRACE)