aboutsummaryrefslogtreecommitdiff
path: root/raytracing/etc/cflags.cmake
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-03-09 21:49:43 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-03-09 21:49:43 +0800
commit99ac5b94e40b1b95be6ebc061f6dcee4d4dcfed5 (patch)
treea5752bac23c6c1cbfb23130e2e51c1e1155723ec /raytracing/etc/cflags.cmake
parent82be1151b5c9e49ccba238ec6e4b18a2cb8fb23d (diff)
downloadrcc-project-99ac5b94e40b1b95be6ebc061f6dcee4d4dcfed5.tar.gz
rcc-project-99ac5b94e40b1b95be6ebc061f6dcee4d4dcfed5.tar.xz
Establish a well-structured modern C++ project architecture
Focus on code quality: Treat strict warnings as errors, memory checks with Sanitizers, Clang formatting and static analysis Performance optimization: LTO, ccache
Diffstat (limited to 'raytracing/etc/cflags.cmake')
-rw-r--r--raytracing/etc/cflags.cmake16
1 files changed, 16 insertions, 0 deletions
diff --git a/raytracing/etc/cflags.cmake b/raytracing/etc/cflags.cmake
new file mode 100644
index 0000000..ac08601
--- /dev/null
+++ b/raytracing/etc/cflags.cmake
@@ -0,0 +1,16 @@
+set (CMAKE_CXX_STANDARD 23)
+set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
+set(SANITIZING_FLAGS -fno-sanitize-recover=all -fsanitize=undefined -fsanitize=address)
+
+# ask for more warnings from the compiler
+set (CMAKE_BASE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Wextra -Weffc++ -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wformat=2 -Wno-unqualified-std-cast-call -Wno-non-virtual-dtor")
+
+# Sanitizers
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ message(STATUS "Enabling Address and Undefined Behavior Sanitizers")
+ set(SANITIZING_FLAGS "-fno-sanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${SANITIZING_FLAGS} -g -O0")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${SANITIZING_FLAGS}")
+endif() \ No newline at end of file