diff --git a/CMakeLists.txt b/CMakeLists.txt index b7394b0..07aacb5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,25 @@ add_compile_options($<$:-Wno-pedantic>) set(CMAKE_CXX_STANDARD 17) +# Add debug configuration +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_CUDA_FLAGS_DEBUG "-g -G -O0 --generate-line-info") +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + set(CMAKE_CUDA_FLAGS_RELEASE "-O3 --use_fast_math") +elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(CMAKE_CUDA_FLAGS_RELWITHDEBINFO "-g -lineinfo -O2") +endif() + +# Set C++ debug/release flags globally +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra") +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") +elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG") +endif() + + # Cuda Settings set(CMAKE_CUDA_ARCHITECTURES 61) set(CUDA_SEPARABLE_COMPILATION ON) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..229aa1f --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,31 @@ +{ + "version": 3, + "configurePresets": [ + { + "name": "debug", + "displayName": "Debug Build", + "binaryDir": "${sourceDir}/Debug", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "release", + "displayName": "Release Build", + "binaryDir": "${sourceDir}/Release", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + } + ], + "buildPresets": [ + { + "name": "debug", + "configurePreset": "debug" + }, + { + "name": "release", + "configurePreset": "release" + } + ] +}