在 binding.gyp
我想这样设置:
"libraries": [ "-Wl,-rpath,<working directory>/build/Release/" ]
我正在使用以下配置来做同样的事情:
"libraries": [ "-Wl,-rpath,<!(pwd)/build/Release/" ]
这行得通,但问题是,它在 Windows 或任何地方都行不通 pwd
不可用,这也不是最好的选择,因为已经有一个预定义的变量 PRODUCT_DIR
可用 node-gyp
为达到这个。奇怪的是我不能使用这个变量 PRODUCT_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
.看起来变量具有值 builddir。
它不应该打印目标目录而不是 builddir 吗?还是 builddir 对编译器意味着什么?
我没有正确使用这个变量还是有其他可用的变量我应该使用?
最佳答案
PRODUCT_DIR
行为真的很奇怪,我不得不说。我尽可能避免它。通常通过使用普通 Node 编写外部构建脚本。
你不能"<!(echo <(PRODUCT_DIR) 1>&2)"
的原因那是node-gyp的某种特殊变量。
但是您使用了正确的格式,例如 here ...
{
'files': [ '<(PRODUCT_DIR)/libzip.dll' ],
'destination': '<(module_path)'
}
我的猜测是你需要...
"variables": {
"YOUR_DIR: "<(PRODUCT_DIR)/build/Release/"",
"your_libs": "-Wl,-rpath,<(CURRENT_DIR) ]"
}
你知道,它是 Python,我们不知道 :)
关于c++ - 使用 node-gyp 预定义变量 PRODUCT_DIR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105839/