aboutsummaryrefslogtreecommitdiff
path: root/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
commit7aa2a67d8381c9a88d69a3f53d74a7f079214263 (patch)
treede149b622a960ffc42bfce1d6a37a81ea3a493a2 /etc/cflags.cmake
parent2a65ece16cd237d56c9dac8d9d3d680e9d34b774 (diff)
downloadray-tracing-7aa2a67d8381c9a88d69a3f53d74a7f079214263.tar.gz
ray-tracing-7aa2a67d8381c9a88d69a3f53d74a7f079214263.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 'etc/cflags.cmake')
-rw-r--r--etc/cflags.cmake16
1 files changed, 16 insertions, 0 deletions
diff --git a/etc/cflags.cmake b/etc/cflags.cmake
new file mode 100644
index 0000000..ac08601
--- /dev/null
+++ b/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