cgo如何抑制警告

cgo how to suppress warnings

我有一个使用 C 库的 cgo 应用程序。在构建过程中,编译器显示了一些警告:

In file included from ./libsolv-sys/src/qsort_r.c:40:0,
                 from ./libsolv-sys/src/util.c:181,
                 from ./libsolv.go:16:
/usr/include/sys/cdefs.h:1:2: warning: #warning usage of non-standard #include <sys/cdefs.h> is deprecated [-Wcpp]
 #warning usage of non-standard #include <sys/cdefs.h> is deprecated
  ^~~~~~~

这个库不是我自己维护的,我无法直接修复这个警告。不过我已经厌倦了这个警告。

问题:如何在 CGO 中抑制警告?

使用的 CGO 标志: CFLAGS: -I./libsolv-sys/src -D LIBSOLV_INTERNAL LDFLAGS: ${SRCDIR}/libsolv-sys.a

CGO 依靠外部编译器工具链来编译您的 C 代码。 例如,在我的 Linux 机器上,它将默认使用 GCC 来编译 C 代码。

对于 gcc,您正在寻找的标志是 -w,因此您的标志将是:

-I./libsolv-sys/src -D LIBSOLV_INTERNAL -w

参考:Disable all gcc warnings

如果您正在使用另一个工具链,您可能需要另一个标志。