我可以在gyp中使用环境变量吗

Can I use environment variable in gyp

我对 gyp 完全陌生,所以请原谅我对这个主题的无知——我正在尝试将一个使用 gyp 的项目合并到 make 生成的更大环境中。有问题的 .gyp 文件有一个 C 文件的 -L 选项,它指向一个硬编码目录。我想将其更改为指向基于父项目的 makefile 中设置的变量的目录。
在构建项目之前,我可以使用 sed 来搜索和替换字符串,但这看起来很乱。我想知道是否可以从 gyp 文件中访问环境变量?

是的,你可以使用shell命令,例如:

...

    'include_dirs': [
        '<!(echo %OPENSSL_DIR%)/include',
        '<!(echo %BOOST_DIR%)',
        '<!(echo %SQLITE_DIR%)',
    ],

...

(此语法适用于 Windows,对于 Linux 在环境变量中使用 $,如 echo $OPENSSL_DIR)。

对于跨平台定义,使用 'conditions' 指令

'include_dirs': [
    ...
],
'conditions': [
  ['OS=="win"', {
    'include_dirs': [
        '<!(echo %OPENSSL_DIR%)/include',
        '<!(echo %BOOST_DIR%)',
        '<!(echo %SQLITE_DIR%)'
    ]
  }],
  ['OS!="win"', {
    'include_dirs': [
        '<!(echo $OPENSSL_DIR)/include',
        '<!(echo $BOOST_DIR)',
        '<!(echo $SQLITE_DIR)'
    ]
  }]
]

详情见Variable ExpansionsConditionals