node-gypでコマンドラインオプションで変数を指定する

node addonビルドに関する小ネタです。
node-gypを使ったビルド時にコマンドラインから変数指定する方法。(位置的にはmakeのマクロ相当のものです)

gypの変数についての説明
http://code.google.com/p/gyp/wiki/InputFormatReference#Variables

まず、binding.gyp内に変数定義をしておきデフォルト値を設定しておきます。

'variables': {
    'MYLIB_DIR': '../mylib',
},

これをbinding.gyp内で参照するには <(VAR) と >(VAR) という書式があり、Early ExpansionとLate Expansionという
展開タイミングの違いがあるようです。(詳しく読んでませんが)

'include_dirs': [
     '<(MYLIB_DIR)/include',
],

そして、コマンドラインでnode-gypを実行するときにこの変数をオーバーライドすることができます。

% node-gyp --MYLIB_DIR='../mylib_custom' build

(参照)
https://github.com/TooTallNate/node-gyp/issues/180