CMake、RPATH、$ORIGIN 和 @loader_path

Ben*_*mer 6 linux macos rpath cmake

在我的 CMake 项目中,我构建了一堆在运行时作为插件加载的库。因此,我需要设置各种 RPATH,以便动态加载机制可以找到这些库。我还需要整个东西都是可重定位的,因为它是 Python 扩展模块的一部分,因此在构建过程中会被各种工具复制。

似乎正确的方法是使用$ORIGINLinux 上的特殊变量以相对方式设置 RPATH ,并且@loader_pathOSX。好吧,那很好。但是翻看

https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/RPATH-handling

似乎我必须手动执行此操作?CMake 没有任何内置变量,如${ORIGIN}或根据操作系统扩展为正确事物的东西?(也许它甚至因链接器或其他东西而异?我不知道)。似乎这是 CMake 应该为我解决的事情,所以我想在尝试自己实现切换之前检查我没有遗漏任何东西......

顺便说一句,我不关心 Windows,所以如果有一些解决方案不适用于 Windows,这并不重要:)。