使用node-gyp预定义的variablesPRODUCT_DIR
在binding.gyp
我想要这样设置:
"libraries": [ "-Wl,-rpath,<working directory>/build/Release/" ]
我正在使用以下configuration来执行相同的操作:
"libraries": [ "-Wl,-rpath,<!(pwd)/build/Release/" ]
这可以工作,但问题是,它不能在Windows或任何pwd
无法使用,也不是最好的select,因为已经有一个预定义的variablesPRODUCT_DIR
在node-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,我们不知道:)