6

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

4

2 回答 2

5

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

...

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

...

(此语法适用于 Windows,适用于 Linux$在 env vars 中使用,如echo $OPENSSL_DIR)。

于 2015-09-17T10:44:40.153 回答
4

对于跨平台定义,使用“条件”指令

'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)'
    ]
  }]
]

有关详细信息,请参阅变量扩展条件

于 2017-04-25T18:12:11.853 回答