OSX:CMake + RPath混淆

时间:2017-08-30 15:33:44

标签: xcode macos cmake

我有一个正在构建的cmake项目,但在运行时(例如,在运行我的单元测试可执行文件时),它无法链接我的一个dylib依赖项。看一下“otool -L”的输出,我看到了一长串以@rpath为前缀的deps,除了一组没有这个的libs(都来自同一个包)。这是一个代表性的例子,罪犯是libicu * libs:

@rpath/libboost_date_time.dylib ... libicui18n.44.dylib ... libicuio.44.dylib ... @rpath/libQt5DBus_debug.5.dylib ...

在构建时我能做些什么来在这些deps上获得@rpath前缀吗?看看cmake RPATH docs它听起来像RPATH可以设置,但默认情况下它是正确的,包括所有链接的lib路径...我不清楚如何确保libs自己使用rpath。在构建时我能做些什么来确保@rpath前缀在dep名称上吗?

1 个答案:

答案 0 :(得分:0)

CMake从2.8.12版本开始具有一些特殊的功能,该功能稍后会进行其他设置并迅速建立为默认设置。

在目标上使用正确的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