在 GYP 中使用 CMake 生成器表达式

我正在研究包含 C 和 C++ 源代码的 Node.js 本机模块。 node-gyp 用于构建模块。

因为我只希望在 C 代码中出现一个警告上升错误,所以我在 binding.gyp 中使用了以下几行:

"cflags!": [ "-Werror"],"cflags": [ "-Werror=implicit-function-declaration" ],

这在编译 C 代码时工作正常,但在每个 C++ 源文件上产生以下警告:

cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++

我找到了这个答案 - Apply C-specific gcc options to C/C++ mixed library - 它在使用“纯”CMake 时解决了同样的问题。不幸的是,我没有找到是否可能以及如何将此条件正确添加到 GYP 配置文件中 - 也许使用变量和条件?请让我知道它是否可以解决。谢谢。

iCMS 回答:在 GYP 中使用 CMake 生成器表达式

我在我的问题中找到了问题的解决方案,我发布了一个答案,以防万一有人遇到同样的问题。

binding.gyp 中的原始错误配置如下:

"cflags!": [ "-Werror"],"cflags": [ "-Werror=implicit-function-declaration" ],

符合我的要求的正确配置是:

"cflags!": [ "-Werror"],"cflags_c": [ "-Werror=implicit-function-declaration" ],

为了避免 C++ 中的警告,我们只需要将 required 标志添加到 C 特殊标志 cflag_c

在我的项目中研究 my_module.target.mk 文件时获得了解决方案,其中包含以下评论(感谢开发人员!):

# Flags passed to all source files.
CFLAGS_Release := \
# Flags passed to only C files.
CFLAGS_C_Release := \
# Flags passed to only C++ files.
CFLAGS_CC_Release := \

因此看起来很明显,但我仍然没有在 CMake 和 GYP 文档中找到关于这些标志的明确参考。我要求如果您知道它们或您会找到它们,请向我提供相应的链接 - 我应该知道我在搜索文档时的错误在哪里,以便将来避免它们。

本文链接:https://www.f2er.com/164179.html

大家都在问