Skip to content

Commit 60940e4

Browse files
authored
Merge pull request #77 from cpp-best-practices/c-cppcheck
2 parents 34b1afa + d876cfa commit 60940e4

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

src/Standards.cmake

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ macro(set_standards)
2222
endif()
2323

2424
if("{CMAKE_C_STANDARD}" STREQUAL "")
25-
if(DEFINED CMAKE_C17_STANDARD_COMPILE_OPTION OR DEFINED CMAKE_C17_EXTENSION_COMPILE_OPTION)
25+
if(NOT
26+
${ProjectOptions_ENABLE_CPPCHECK} # cppcheck doesn't support C17 https://sourceforge.net/p/cppcheck/discussion/general/thread/19ea152bba/
27+
AND DEFINED CMAKE_C17_STANDARD_COMPILE_OPTION
28+
OR DEFINED CMAKE_C17_EXTENSION_COMPILE_OPTION)
2629
set(C_LATEST_STANDARD 17)
2730
elseif(DEFINED CMAKE_C11_STANDARD_COMPILE_OPTION OR DEFINED CMAKE_C11_EXTENSION_COMPILE_OPTION)
2831
set(C_LATEST_STANDARD 11)

src/StaticAnalyzers.cmake

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,27 @@ macro(enable_cppcheck CPPCHECK_OPTIONS)
2626
set(CMAKE_CXX_CPPCHECK ${CPPCHECK} --template=${CPPCHECK_TEMPLATE} ${CPPCHECK_OPTIONS})
2727
endif()
2828

29+
if(WARNINGS_AS_ERRORS)
30+
list(APPEND CMAKE_CXX_CPPCHECK --error-exitcode=2)
31+
endif()
32+
33+
# C cppcheck
34+
set(CMAKE_C_CPPCHECK ${CMAKE_CXX_CPPCHECK})
35+
2936
if(NOT
3037
"${CMAKE_CXX_STANDARD}"
3138
STREQUAL
3239
"")
3340
set(CMAKE_CXX_CPPCHECK ${CMAKE_CXX_CPPCHECK} --std=c++${CMAKE_CXX_STANDARD})
3441
endif()
35-
if(WARNINGS_AS_ERRORS)
36-
list(APPEND CMAKE_CXX_CPPCHECK --error-exitcode=2)
42+
43+
if(NOT
44+
"${CMAKE_C_STANDARD}"
45+
STREQUAL
46+
"")
47+
set(CMAKE_C_CPPCHECK ${CMAKE_C_CPPCHECK} --std=c${CMAKE_C_STANDARD})
3748
endif()
49+
3850
else()
3951
message(${WARNING_MESSAGE} "cppcheck requested but executable not found")
4052
endif()

0 commit comments

Comments
 (0)