2

ノード 0.8 とその拡張 libuv 用に作成された node.js モジュール用の C++ コードがいくつかあります。具体的には、ノード 0.6 に含まれる libuv には存在しない uv_mutex_* 関数を使用しています。これらの関数に相当する pthreads を条件付きで埋め込みたいのですが、古いバージョンでビルドした場合のみです。

これにより、ノード 0.8 でビルドした場合はクロスプラットフォーム ビルド (Windows と Linux) が得られ、ノード バージョンが 0.6 の場合は機能する Linux バージョンが得られます。

ノード バージョンのプリプロセッサ #define はありますか? 見つからない。私が思いつくことができる最善の方法は、 <@(node_root) に基づいてバージョンを推測し、何らかの形でそれを「定義」値にマッサージするために、binding.gyp でいくつかの厄介なことを行うことです。もっと良い方法があるはずです!

4

1 に答える 1

2

Memwatchモジュールのbinding.gypファイルはあなたが探していることをします。

ノードバージョンをキャプチャするための変数を定義します。

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

そして、次の条件で使用します。

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

最も洗練されたソリューションではありませんが、明らかに、今のところこれ以上良いものはありません。

于 2012-08-03T08:30:40.403 に答える