我可以在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)'
]
}]
]
我对 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)'
]
}]
]