如何解决在 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 配置文件中 - 也许使用变量和条件?请让我知道它是否可以解决。谢谢。
解决方法
我在我的问题中找到了问题的解决方案,我发布了一个答案,以防万一有人遇到同样的问题。
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 文档中找到关于这些标志的明确参考。我要求如果您知道它们或您会找到它们,请向我提供相应的链接 - 我应该知道我在搜索文档时的错误在哪里,以便将来避免它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。