如何在cmake中设置rpath原点?

Gue*_*OCs 5 linker cmake shared-libraries

我发现Cmake: How to set rpath to ${ORIGIN} with cmake但我的 cmake 没有 target_link_options。

我没有安装二进制文件,我只是用 来“安装”它RUNTIME_OUTPUT_DIRECTORY,所以我认为CMAKE_INSTALL_RPATH这行不通。尽管如此,我SET(CMAKE_INSTALL_RPATH "$\{ORIGIN\}")还是按照问题中的建议进行了尝试,但是我得到了

  Syntax error in cmake code at

  .../CMakeLists.txt:25

  when parsing string

    $\{ORIGIN\}

  Invalid escape sequence \{
Run Code Online (Sandbox Code Playgroud)

我需要设置我在 Makefile 中使用的这个 rpath:

-rpath=\$$ORIGIN/lib
Run Code Online (Sandbox Code Playgroud)

如何在cmake中做到这一点?

小智 10

以下内容适用于 3.14

  set(CMAKE_INSTALL_RPATH $ORIGIN)
Run Code Online (Sandbox Code Playgroud)

这是 Craig Scott 在他的 CppCon 2019 演讲Deep CMake for Library Authors中推荐的内容(幻灯片 100/110)

  • 根据幻灯片,在 add_executable 之前添加该行非常重要 (3认同)