Macos 如何将可执行文件链接到动态库以使程序可重新撤销-最好使用cmake
我有一个简单的应用程序,它创建动态库和可执行文件,并将其中的两个链接在一起Macos 如何将可执行文件链接到动态库以使程序可重新撤销-最好使用cmake,macos,cmake,dynamic-linking,dyld,Macos,Cmake,Dynamic Linking,Dyld,我有一个简单的应用程序,它创建动态库和可执行文件,并将其中的两个链接在一起 cmake_minimum_required (VERSION 3.4) project (SampleApplication) add_library(SampleSharedLibrary SHARED some.cpp) add_executable(SampleApplication main.cpp) target_link_libraries(SampleApplication SampleSharedLib
cmake_minimum_required (VERSION 3.4)
project (SampleApplication)
add_library(SampleSharedLibrary SHARED some.cpp)
add_executable(SampleApplication main.cpp)
target_link_libraries(SampleApplication SampleSharedLibrary)
问题是当我将文件复制到其他目录时
cp bin/* other_directory/
它会错误地停止工作
dyld:未加载库:@rpath/libSampleSharedLibrary.dylib引用自:/some\u path/other\u目录//SampleApplication
原因:找不到图像 中止陷阱:6 其他资料: cmake版本3.7.2 otool-D libSampleSharedLibrary.dylib libSampleSharedLibrary.dylib: @rpath/libSampleSharedLibrary.dylib 我在谷歌上搜索了一下,但在cmake中找不到实现这一点的方法——要么我使用了错误的属性,要么我没有正确的语法。我发现一些帖子建议使用instal_name_工具,但我更愿意坚持只使用cmake,因为我认为这应该在cmake中是可行的。我发现解决方案应该是在dylib中使用“@executable\u path”(或@loader\u path)作为install\u名称,或者在dylib中使用rpath并使用“@executable\u path”将rpath添加到可执行文件中 所以我的问题是如何在cmake中创建可重定位的动态库和可执行对。一个工作的cmake代码示例将是完美的。如果你在这方面很流利,你可以找到一些方法,如果你能列出一些解释,我将不胜感激