我有一个正在构建的cmake项目,但在运行时(例如,当运行我的单元测试可执行文件时),它不能链接我的dylib依赖项之一。查看"otool -L“的输出,我看到了一长串以@rpath为前缀的dep,除了一组令人不快的lib(它们都来自同一个包)之外,它们都没有这个前缀。下面是一个有代表性的例子,其中违规者是libicu* libs:
@rpath/libboost_date_time.dylib ... libicui18n.44.dylib ... libicuio.44.dylib ... @rpath/libQt5DBus_debug.5.dylib ...
在构建时,我能做些什么来获取这些dep上的@rpath前缀吗?查看cmake RPATH docs,我觉得可以设置RPATH,但默认情况下它是正确的,包括所有链接库路径……我不清楚如何确保lib本身使用rpath。在构建时,我能做些什么来确保在dep名称上有@rpath前缀?
发布于 2018-10-06 20:33:12
从2.8.12版本开始,CMake就有了一些特殊的魔力,它后来得到了额外的设置,并很快被设置为默认设置。
在目标上使用适当的MACOSX_RPATH,以便在OSX上正确初始化rpath。
策略CMP0042控制这是否是默认行为。
https://cmake.org/cmake/help/v3.0/prop_tgt/MACOSX_RPATH.html#prop_tgt:MACOSX_RPATH https://cmake.org/cmake/help/v3.0/policy/CMP0042.html
https://stackoverflow.com/questions/45964484
复制相似问题