如何在调试模式和发布模式下链接一个动态库和一个可执行文件

CMake, How I can link a dynamic library with an executable in debug mode and release mode?

本文关键字:一个 模式 可执行文件 动态 链接 调试 布模式      更新时间:2023-10-16

我正在学习CMake。

我的项目由一个可执行文件和一个共享库组成。共享库可以被第三方项目使用。可执行文件和共享库将被安装到系统中。

我有两种开发模式:调试和发布。简单地说,我定义了一个选项,并根据该选项的值为CMAKE_BUILD_TYPE变量设置一个值。

我将可执行文件与共享库链接如下:

ADD_EXECUTABLE( my_executable ${MY_EXECUTABLE_SOURCE_FILES} )
TARGET_LINK_LIBRARIES(
  my_executable
  ${MY_EXECUTABLE_DEPENDENCIES_LIBRARIES}
  my_shared_library #target generated with ADD_LIBRARY
)

我的问题是,当我链接在发布模式,我运行ldd工具:

~/my-project/build$ sudo make install
~/my-project/build$ ldd -d /usr/local/bin/my_executable
my_shared_library.so.0.1 => /path/my-project/output/lib/my_shared_library.so.0.1 (0x00007f1361adb000)
                            ------------------------
                                   local path

当它应该显示时:

my_shared_library.so.0.1 => /usr/local/lib/my_shared_library.so.0.1 (0x00007f1361adb000)
                            -----------
                            install path

我该如何解决这个问题?

我应该创建一个静态库(共享库的一部分)并将可执行文件与它链接吗?

欢呼

我找到的解决方案:对象库

欢呼

相关文章: