Node.js 有没有办法在node gyp命令行上指定编译器标志(例如,预处理器宏定义)?

Node.js 有没有办法在node gyp命令行上指定编译器标志(例如,预处理器宏定义)?,node.js,node-gyp,Node.js,Node Gyp,我正在尝试将Node.js插件集成到基于CMake的现有构建系统中。插件构建需要大量的预处理器宏定义和库依赖项,这些在CMake上下文中可用。当CMake调用gyp时,我希望能够将它们传递到节点gyp中。不幸的是,我没有找到一个简单的方法来做到这一点 我尝试过使用用于普通的老gyp的方法,如下所示: node-gyp configure -d -DPOSIX=1 但是-D选项似乎没有通过节点gyp传递。查看节点gyp的源代码,这并不完全令人惊讶。有没有一种简单、直接的方法可以做到这一点,或者我

我正在尝试将Node.js插件集成到基于CMake的现有构建系统中。插件构建需要大量的预处理器宏定义和库依赖项,这些在CMake上下文中可用。当CMake调用gyp时,我希望能够将它们传递到节点gyp中。不幸的是,我没有找到一个简单的方法来做到这一点

我尝试过使用用于普通的老
gyp
的方法,如下所示:

node-gyp configure -d -DPOSIX=1

但是
-D
选项似乎没有通过
节点gyp
传递。查看
节点gyp
的源代码,这并不完全令人惊讶。有没有一种简单、直接的方法可以做到这一点,或者我一直在以编程方式在
binding.gyp
中生成条目,从环境或其他方面获取这些信息?

我不知道为什么在binding.gyp中使用cflags设置会有负面影响,但我只是通过使用.bashrc设置标志来实现类似的效果

导出CFLAGS='-m32' 导出CXXFLAGS='-m32' 导出LDFLAGS='-m3'

使用“定义”


这将在运行节点gyp configure时将定义添加到config.gypi中,该节点将适用于作为环境变量处理的对象,但不适用于任意预处理器定义。我已经很久没有研究过这个问题了,但这里的问题是,我们希望在某些构建上下文中使用不同的预处理器定义(由CMake确定),因此简单地将它们添加到文件中实际上是站不住脚的(如果我没记错的话)。
{
  "targets": [
    {
      "target_name": "MyAddon",
      "sources": [ "File1.cpp", "File2.cpp" ],
      "libraries": [ "MyNeeded.lib" ],
      "defines": [ "_UNICODE", "UNICODE" ]
    }
  ]
}