在CMake中,可以通过设置CMAKE_SKIP_RPATH变量来避免链接时使用@rpath,并使用绝对路径来链接依赖库。下面是一个示例:
# 设置CMAKE_SKIP_RPATH为TRUE
set(CMAKE_SKIP_RPATH TRUE)
# 设置CMAKE_INSTALL_RPATH为空,以便在安装时不添加任何RPATH
set(CMAKE_INSTALL_RPATH "")
# 添加依赖库的绝对路径
list(APPEND CMAKE_PREFIX_PATH "/path/to/dependency/lib")
# 添加可执行文件
add_executable(myapp main.cpp)
# 链接依赖库
target_link_libraries(myapp PRIVATE dependency)
在上面的示例中,首先设置CMAKE_SKIP_RPATH为TRUE,以避免在链接时使用@rpath。然后,将CMAKE_INSTALL_RPATH设置为空,以便在安装时不添加任何RPATH。接下来,使用list(APPEND ...)添加依赖库的绝对路径。最后,使用target_link_libraries命令将依赖库链接到可执行文件中。
这样,CMake将使用绝对路径来链接依赖库,而不是使用@rpath。