Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMAKE中rpath的问题_C++_Cmake - Fatal编程技术网

C++ CMAKE中rpath的问题

C++ CMAKE中rpath的问题,c++,cmake,C++,Cmake,我对cmake有点问题,比如 我想链接到我正在编译的共享库的库之一是boost。 所以,我试着: target_link_libraries(my_project ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_CHRONO_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_REGEX_LIBRARY} ${Boost_SIGNALS_LI

我对cmake有点问题,比如 我想链接到我正在编译的共享库的库之一是boost。 所以,我试着:

target_link_libraries(my_project
    ${Boost_FILESYSTEM_LIBRARY}
    ${Boost_SYSTEM_LIBRARY}
    ${Boost_CHRONO_LIBRARY}
    ${Boost_DATE_TIME_LIBRARY}
    ${Boost_REGEX_LIBRARY}
    ${Boost_SIGNALS_LIBRARY}
    ${Boost_THREAD_LIBRARY})
但是,当我在终端中执行检查链接时

    ldd libmy_project.so
    libboost_system.so.1.66.0 => not found
    libboost_chrono.so.1.66.0 => not found
    libboost_date_time.so.1.66.0 => not found
    libboost_regex.so.1.66.0 => not found
    libboost_signals.so.1.66.0 => not found
    libboost_thread.so.1.66.0 => not found
但是boost库是由cmake在CMakeList中发现的。 有人知道怎么解决这个问题吗

编辑:

问题是要正确设置rpath,我试图遵循cmake文档。然而,这对我不起作用。 唯一有效的方法是在CMkaeLists.txt中的
目标链接库(…)
之前添加这一行:

set_target_properties(YOUR_PROJECT PROPERTIES LINK_FLAGS "-Wl,-rpath, YOUR_LIB_LOCATION_HERE")

动态加载程序(
ldd
)使用RPATH机制查找库。如果已将Boost安装为非系统默认路径,则需要调整RPATH以查找它。另请参阅此问题:。是的,但我在正确调整rpath时遇到一些问题,我仍然无法链接该
,但在正确调整rpath时遇到一些问题
-然后用您尝试过的内容的描述更新问题帖子。CMake的版本是什么?它必须是3.11或更高版本,参见。
我试图遵循cmake文档。但是,它对我不起作用。
-再次,你说你的代码有问题。。。但是显示另一个代码,它是有效的。你到底有什么问题?