CMakeLists.txt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. cmake_minimum_required(VERSION 4.1)
  2. project(basic C)
  3. set(CMAKE_C_STANDARD 23)
  4. set(SRC
  5. "src/Main.c"
  6. "src/Code.c"
  7. "src/Values.c"
  8. )
  9. set(COMPILER_ARGUMENTS
  10. -Wall -Wvla -Werror
  11. -Wextra -Wundef -Walloca
  12. -Wshadow -Wformat=2 -Wcast-qual
  13. -Wdate-time -Winit-self -Wmultichar
  14. -Wnarrowing -Wcast-align -Wconversion
  15. -Wfloat-equal -Winvalid-pch -Warray-bounds
  16. -Wenum-compare -Winvalid-utf8 -Wwrite-strings
  17. -Wmissing-braces -Wnested-externs -Wshift-overflow
  18. -Warray-parameter -Wenum-conversion -Wformat-overflow
  19. -Wredundant-decls -Wsign-conversion -Wstack-protector
  20. -Wdouble-promotion -Wjump-misses-init -Wnull-dereference
  21. -Wunreachable-code -Wbad-function-cast -Wformat-signedness
  22. -Wformat-truncation -Wstrict-overflow=2 -Wstrict-prototypes
  23. -Winfinite-recursion -Wmissing-prototypes -Woverlength-strings
  24. -Wimplicit-fallthrough -Wmissing-declarations -Wmissing-include-dirs
  25. -Wold-style-definition -Wdisabled-optimization -Wunused-const-variable
  26. -Wlarger-than=1073741824 -Wdeprecated-non-prototype
  27. -Wframe-larger-than=8388608 -Wmissing-variable-declarations
  28. -Wzero-as-null-pointer-constant
  29. -fdiagnostics-color=always -fstrict-flex-arrays=3
  30. -pedantic -pedantic-errors
  31. )
  32. if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
  33. set(COMPILER_ARGUMENTS ${COMPILER_ARGUMENTS}
  34. -Walloc-zero -Wlogical-op -Wtrampolines
  35. -Wbidi-chars=any -Wduplicated-cond -Wnormalized=nfkc
  36. -Warith-conversion -Wuse-after-free=3 -Wattribute-alias=2
  37. -Wstrict-flex-arrays -Wduplicated-branches -Wstack-usage=8388608
  38. -Wstringop-overflow=4 -Wanalyzer-too-complex -Wtrivial-auto-var-init
  39. -Wanalyzer-symbol-too-complex -Wflex-array-member-not-at-end
  40. )
  41. elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
  42. set(COMPILER_ARGUMENTS ${COMPILER_ARGUMENTS}
  43. -Wmissing-variable-declarations -Wconditional-uninitialized
  44. -Wold-style-definition -Wmissing-prototypes
  45. -Wstrict-prototypes -Wbad-function-cast
  46. -Wmissing-noreturn -Wextra-semi-stmt
  47. -Wnested-externs -Wnarrowing
  48. )
  49. endif()
  50. add_executable(${PROJECT_NAME} ${SRC})
  51. target_compile_options(${PROJECT_NAME} PUBLIC
  52. ${COMPILER_ARGUMENTS}
  53. )