【发布时间】:2015-07-18 07:23:07
【问题描述】:
在binding.gyp我想这样设置:
"libraries": [ "-Wl,-rpath,<working directory>/build/Release/" ]
我正在使用以下配置来做同样的事情:
"libraries": [ "-Wl,-rpath,<!(pwd)/build/Release/" ]
这可行,但问题在于,它不适用于 Windows 或任何pwd 不可用的地方,而且这也不是最佳选择,因为node-gyp 中已经有一个预定义变量PRODUCT_DIR 可用为了达成这个。奇怪的是我不能使用这个变量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)吗? stackoverflow.com/questions/17023442/… 的可能重复项 -
试过但没有运气:(如果我定义了一个用户定义的变量,我可以使用它
<(user_defined_variable_dir),但预定义的变量PRODUCT_DIR不起作用。 -
幸运的是,在 Windows 上我的
addon即使没有设置rpath也能工作 :) 所以现在我已经添加了一个条件并通过执行pwd来设置rpath其中"OS!='win'"。 github.com/royalpinto/node-cares/blob/master/binding.gyp