当 std.cfg 文件可用时,cppcheck std.cfg 未找到错误

问题描述 投票:0回答:7

如果我启动 cppcheck,我会收到以下错误: cppcheckListLib.c (信息)无法加载 std.cfg。您的 Cppcheck 安装已损坏,请重新安装。 Cppcheck 二进制文件是在 CFGDIR 设置为“/usr/bin/cfg”的情况下编译的,因此将在该路径中搜索 std.cfg。

系统:opensuse13,cppcheck版本:cppcheck-1.64, 编译: make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes

检查文件是否存在: ls /usr/bin/cfg : gtk.cfg posix.cfg qt.cfg sdl.cfg std.cfg windows.cfg

cfg 所在位置: 配置文件:/usr/bin/cfg

std.cfg 位于何处: std: /usr/bin/cfg/std.cfg

cat std: /usr/bin/cfg/std.cfg 为我提供该文件的输出

堆栈跟踪:

lstat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
stat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
open("std.cfg", O_RDONLY)               = -1 ENOENT (No such file or directory)
open("cfg/std.cfg", O_RDONLY)           = -1 ENOENT (No such file or directory)
write(2, "(information) Failed to load std"..., 213) = 213
write(2, "\n", 1)                       = 1
exit_group(1)                           = ?
+++ exited with 1 +++

更改为 /usr/bin 目录有效: 检查/.../ListLib.c

cppcheck --check-config ListLib.c: 给出相同的错误,如果我在 /usr/bin/

中执行它,则工作得很好

对于登陆此页面的人来说,我可以使用我的主文件夹中的 cfg 文件:

make SRCDIR=build CFGDIR=~/cppcheck_cfg 然后offcourse
须藤进行安装

cppcheck
7个回答
26
投票

我也遇到同样的问题

解决方案:

$ make SRCDIR=build CFGDIR=/usr/share/cppcheck/

$ sudo make install CFGDIR=/usr/share/cppcheck/

从 cppcheck 社区成员那里得到建议,并了解到“make install”还需要传递 CFGDIR 选项。


4
投票
make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes

make install CFGDIR=/usr/bin/cfg

2
投票

几天前我遇到了同样的问题,并通过更改在 cppcheck 上运行 makefile 的方式来解决。

我使用Linux Red Hat版本,cppcheck版本是1.65。

make SRCDIR=build CFGDIR=/home/###/####/cppcheck-1.65/cfg/ && make install

我并没有真正深入研究细节,但 cppcheck 的 makefile 看起来像是在清理 obj 并通过第一个 make 命令构建 cppcheck 包括 cfg 位置

make SRCDIR=build CFGDIR=/home/###/####/cppcheck-1.65/cfg/ &&

第二个 make 命令会将 cppcheck 分发到 /usr/bin/ 位置。

make install

现在您所要做的就是设置 bash。


1
投票

使用

file /usr/bin/cfg/std.cfg
检查权限,以确保您有权访问您认为应该尝试读取的配置文件。

如果失败,请在 strace 下运行 cppcheck 以查找失败的系统调用:

strace -o /tmp/strace.out cppcheck ListLib.c


0
投票

在使用 Qt Creator 在 Mac 上编译并运行 GUI 版本后,我在目录上运行 cppCheck GUI 时遇到了同样的问题。我通过将“std.cfg”复制到应用程序文件夹中解决了问题:Contents/MacOS 您必须右键单击 cppcheck-gui 应用程序才能访问内容。将其放在同一文件夹中的 cppcheck-gui 文件旁边似乎可以,因为该文件夹必须是它首先检查的位置。 “std.cfg”文件可以在cfg文件夹中找到。


0
投票

正如@prabhugs所说,我会做更多描述。 github源码中,cppcheck,建议make语法为:

$ make SRCDIR=build CFGDIR=cfg HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function

其中“CFGDIR”选项是您可以指定的方向。例如:

$ make SRCDIR=build CFGDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function

然后,你可以使用这个语法:

$ sudo make install CFGDIR=/usr/share/cppcheck/

完成这些步骤后我相信你可以享受cppcheck了。


0
投票

更新截至2019年9月1日

里程碑1.89

从现在开始,使用

FILESDIR
代替
CFGDIR
来指定Cppcheck数据文件的路径


对于使用cmake的任何人,您可以在配置cmake时指定

FILESDIR

cmake -S . -B build \
    -DCMAKE_BUILD_TYPE=Release \
    -DHAVE_RULES=ON \
    -DUSE_MATCHCOMPILER=ON \
    -DBUILD_TESTS=OFF \
    -DBUILD_GUI=OFF \
    -DFILESDIR=/usr/share/cppcheck/
cmake --build build --parallel
cmake --build build --target install
© www.soinside.com 2019 - 2024. All rights reserved.