0

我正在开发一个使用第三方封闭源代码 SDK 的项目,该 SDK 由单个共享库和相应的头文件组成。我试图避免将库添加到搜索路径,因此我可以尝试针对库的多个不同版本编译项目以进行测试。

我的问题是如何处理共享库以便项目构建和运行良好?我可以构建项目,但是新创建的可执行文件找不到我需要的共享库。如果我将共享库复制到与可执行文件相同的文件夹中,它将运行,但我想避免手动执行该额外步骤以使其他开发人员更轻松。什么是管理共享库依赖项的好方法,以便在构建项目时即使在搜索路径中没有共享库也可以运行?

以下是我的CMakeLists.txt文件的相关部分,显示了我如何定位共享库:

add_library(theSDK SHARED IMPORTED)
set_target_properties( theSDK PROPERTIES IMPORTED_LOCATION 
    ${CMAKE_CURRENT_SOURCE_DIR}/lib/TheSDK/lib/libSDK.dylib )
add_executable(myProject ${myProject_SOURCES})
target_link_libraries (myProject theSDK)
4

1 回答 1

1

如果您在 Linux 或 Mac 上运行并且您所依赖的共享库的位置知道您可以使用 rpath 在可执行文件中包含库搜索路径。参见例如:

或者,您可以配置一个脚本来执行程序,然后在执行二进制文件之前动态调整 PATH (Windows)、LD_LIBRARY_PATH (Linux) 或 DYLD_LIBRARY_PATH (Mac)。这些环境变量用于在运行时解析共享库。

于 2013-05-07T15:28:36.910 回答