gpt4 book ai didi

cmake - CMake 中的 Cppcheck 支持

转载 作者:行者123 更新时间:2023-12-01 16:45:11 26 4
gpt4 key购买 nike

我并不是询问以某种方式支持 Cppcheck 的各种可用第三方模块。

在 CMake 3.10 中,CMake 似乎获得了一些官方 Cppcheck 支持。请参阅CMAKE_<LANG>_CPPCHECK .

不幸的是,有关如何使用此变量的文档有点稀疏。是否有一个很好的示例来说明如何将 Cppcheck 与 CMake 3.10(或更高版本)一起使用?

最佳答案

simple example将会是 - 如果你有 cppcheck在你的PATH并且您没有指定其他参数 - 以下通过设置全局 CMAKE_<LANG>_CPPCHECK 变量:

cmake_minimum_required(VERSION 3.10)

project(CppCheckTest)

file(
WRITE "main.cpp"
[=[
int main()
{
char a[10];
a[10] = 0;
return 0;
}
]=]
)

set(CMAKE_CXX_CPPCHECK "cppcheck")
add_executable(${PROJECT_NAME} "main.cpp")

要扫描的文件会自动添加到 cppcheck命令行。因此上面的示例给出了以下输出(Linux 系统上的 gcccppcheck):

# make
Scanning dependencies of target CppCheckTest
[ 50%] Building CXX object CMakeFiles/CppCheckTest.dir/main.cpp.o
Checking .../CppCheckTest/main.cpp...
Warning: cppcheck reported diagnostics:
[/mnt/c/temp/StackOverflow/CppCheckTest/main.cpp:4]: (error) Array 'a[10]' accessed at index 10, which is out of bounds.
[100%] Linking CXX executable CppCheckTest
[100%] Built target CppCheckTest

你可以给cppcheck通过简单地设置 CMAKE_CXX_CPPCHECK 在现有项目中进行尝试变量通过 cmake命令行:

# cmake -DCMAKE_CXX_CPPCHECK:FILEPATH=cppcheck ..

一个更“日常生活”的例子可能会让您在 CMakeList.txt 中包含类似以下代码片段的内容:

find_program(CMAKE_CXX_CPPCHECK NAMES cppcheck)
if (CMAKE_CXX_CPPCHECK)
list(
APPEND CMAKE_CXX_CPPCHECK
"--enable=warning"
"--inconclusive"
"--force"
"--inline-suppr"
"--suppressions-list=${CMAKE_SOURCE_DIR}/CppCheckSuppressions.txt"
)
endif()

引用文献

关于cmake - CMake 中的 Cppcheck 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48625499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com