gpt4 book ai didi

node.js - 如何使用node-gyp根据 Node 版本有条件地编译node.js的 native 代码?

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:01 24 4
gpt4 key购买 nike

我有一些针对 Node.js 模块的 C++ 代码,该代码是为 Node 0.8 及其增强型 libuv 编写的。具体来说,我使用的是 uv_mutex_* 函数,该函数在 Node 0.6 中包含的 libuv 中不存在。我想有条件地嵌入这些函数的 pthread 等效项,但仅限于在旧版本上构建时。

在 Node 0.8 上构建时,这应该为我提供跨平台构建(Windows 和 Linux),如果 Node 版本为 0.6,则为我提供功能正常的 Linux 版本。

Node 版本有预处理器#define吗?我找不到一个。我能想到的最好办法是在 binding.gyp 中做一些困惑的事情,尝试根据 <@(node_root) 猜测版本,并​​以某种方式将其调整为“定义”值。一定有更好的方法!

最佳答案

binding.gyp Memwatch 模块的文件可以满足您的要求。

它定义了一个变量来捕获 Node 版本:

'variables': {
'node_ver': '<!(node --version | sed -e "s/^v\([0-9]*\\.[0-9]*\).*$/\\1/")'
},

然后在条件中使用它:

'target_conditions': [
['node_ver=="0.8"', { 'defines': ['NEW_COMPACTION_BEHAVIOR'] } ]
]

这不是最优雅的解决方案,但显然,现在没有更好的解决方案了。

关于node.js - 如何使用node-gyp根据 Node 版本有条件地编译node.js的 native 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com