Cmake设置到第三方库的二进制相对路径



我正在尝试使用Cmake制作我的第一个项目,我面临着静态链接到*的问题。所以图书馆。

我的二进制文件只能从构建文件夹中看到库。

我已经尝试使用来自"RPATH处理"的语句。手动,但目前还不能工作:

set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH "/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
target_link_libraries(mt libjack.so "${CMAKE_BINARY_DIR}/lib/librtmidi.so")

与qmake相比,我可以将其包含在proffile中:

QMAKE_LFLAGS += -Wl,--rpath=\$$ORIGIN/lib

,然后,无论我将二进制文件部署到哪里,其中一个将链接到/lib文件夹中的库。

谢谢!

在Tsyvarev的帮助下,我已经设法使我的二进制文件与lib文件夹静态链接,无论我在哪里复制它们。对于CMAKE_INSTALL_RPATH,我输入"lib"(而不是"/lib")将此块放置在add_executable定义

之前
...
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH "lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
...
add_executable(mtest main.cpp)
...
target_link_libraries(mtest libjack.so "${CMAKE_BINARY_DIR}/lib/librtmidi.so")
...

谢谢!

最新更新