使用node-gyp预定义的variablesPRODUCT_DIR

binding.gyp我想要这样设置:

"libraries": [ "-Wl,-rpath,<working directory>/build/Release/" ]

我正在使用以下configuration来执行相同的操作:

"libraries": [ "-Wl,-rpath,<!(pwd)/build/Release/" ]

这可以工作,但问题是,它不能在Windows或任何pwd无法使用,也不是最好的select,因为已经有一个预定义的variablesPRODUCT_DIRnode-gyp可用来实现这一点。 奇怪的是我无法使用这个variablesPRODUCT_DIR

我尝试了以下选项,但没有运气。 错误说Library not loaded: @rpath/<lib>.dylib (rpath没有被设置):

  • "libraries": [ "-Wl,-rpath,>(PRODUCT_DIR)/build/Release/" ]
  • "libraries": [ "-Wl,-rpath,<(PRODUCT_DIR)/build/Release/" ]
  • "libraries": [ "-Wl,-rpath,>(PRODUCT_DIR)"]
  • "libraries": [ "-Wl,-rpath,<(PRODUCT_DIR)"]

当我尝试打印"<!(echo <(PRODUCT_DIR) 1>&2)"它说: builddir: command not found 。 看起来像variables有价值builddir。 不应该打印目标目录,而不是builddir? 或builddir意味着什么编译器?

我是不是正确使用这个variables,或者是否有其他可用的variables,我应该使用?

PRODUCT_DIR行为真的很奇怪,我必须说。 我尽可能避免它。 通常通过用普通节点编写外部构build脚本。

你不能"<!(echo <(PRODUCT_DIR) 1>&2)"是这是node-gyp的某种特殊variables。

然而,你正在使用正确的格式,就像这里 …

 { 'files': [ '<(PRODUCT_DIR)/libzip.dll' ], 'destination': '<(module_path)' } 

我的猜测是,你需要…

 "variables": { "YOUR_DIR: "<(PRODUCT_DIR)/build/Release/"", "your_libs": "-Wl,-rpath,<(CURRENT_DIR) ]" } 

你知道,这是Python,我们不知道:)