【发布时间】:2016-12-05 18:01:11
【问题描述】:
我在 Xcode 中有一个项目,我在环境变量窗格中设置了 DYLD_FALLBACK_LIBRARY_PATH 来设置我的应用程序应该在哪里寻找要链接的库(这对我的目的很有效)
我现在正在编写一个 CMakeLists.txt 文件来生成这个项目,我想从脚本中设置这个属性。
我知道我可以这样做:
SET(ENV{DYLD_FALLBACK_LIBRARY_PATH} ${DYLD_FALLBACK_LIBRARY_PATH} /path/to/lib)
但是当我运行我得到这个错误:
'dyld: Library not loaded ... Reason: image not found'
启动应用程序时。我想这个说法是不一样的。
有人知道我如何从 CMakeLists.txt 中实现与 Xcode 中相同的功能吗?
我隐约知道 CMake RPATH 的东西,但如果可能的话,我宁愿避免这样做。
感谢您的宝贵时间!
干杯!
汤姆
【问题讨论】:
-
I am vaguely aware of the CMake RPATH stuff but I'd rather avoid that if possible.- 但这是做你想做的事情的正确方法。有关更多信息,请参阅cmake.org/Wiki/CMake_RPATH_handling。SET(ENV{..})仅在cmake运行阶段设置环境变量,它不会影响构建或运行阶段的环境。 -
嗨!我可能应该模糊地强调......:P 我的情况是我有一个 dylib(在本例中为 SDL),我想在运行时链接,但我不想将它添加到系统路径(/usr/ local/bin ..) 我查看了 RPATH 的东西,但它看起来非常复杂。我已经阅读了那篇文章并尝试了它说要使用的一些 CMake 东西,但运气不佳。我必须做 dylib install_name_tool 的事情吗?我想避免这种情况,因为它看起来有点奇怪。我的背景主要是 Windows,所以也许我遗漏了一些明显的东西!谢谢!
-
如果您在阅读关于 RPATH 的 CMake 文章时遇到问题,请描述具体问题。
-
在您提到的链接中,我尝试使用“始终完整 RPATH”部分下的 CMake 示例 - 但我不确定是否需要修改现有的 dylib。如果我运行 otool -L,路径是绝对的,并且我的应用程序正在 usr/local/bin 中寻找我的共享库(如果不是)我真的不想修改 dylib 如果我可以帮助它,而且我还没有自己建造。
-
可能有点晚了,但如果其他人想避免
@rpath的内容并看到这篇文章,只需调用您编译的程序,如DYLD_LIBRARY_PATH=<path to lib> ./<program>。信用:superuser.com/a/282451
标签: macos linker cmake dyld rpath