如何使用 CMake、MacOS 链接共享库

问题描述 投票:0回答:1

我构建了一个名为 foo_shared_debug.dylib 的共享库。我想将它链接到一个名为 bar 的可执行文件。

我能够构建酒吧,但在运行时我得到了

dyld[xxxx]:未加载库:foo_shared_debug.dylib ...

这是我的目录结构

  • 共享
    • foo.h
    • foo_shared_debug.dylib
  • CMakeLists.txt
  • 主.cpp

这是我的CMakeLists.txt

cmake_minimum_required(VERSION 3.28)
project(tryshared)

set(CMAKE_CXX_STANDARD 23)

add_library(foo SHARED IMPORTED GLOBAL)
set_target_properties(foo PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/shared/foo_shared_debug.dylib)
add_executable(bar main.cpp)
target_link_libraries(bar foo)

如果我也将 foo_shared_debug.dylib 放入 /usr/local/lib 中,我就能够解决该问题,但这并不理想。有任何想法吗?谢谢。

macos cmake shared-libraries
1个回答
0
投票

我最终将库(

foo_shared_debug.dylib
)直接放在构建文件夹(
${CMAKE_BINARY_DIR}
)中。然后我的
CMakeLists.txt
文件变成:

add_library(foo SHARED IMPORTED GLOBAL)
set_target_properties(foo PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/foo_shared_debug.dylib)
add_executable(bar main.cpp)
target_link_libraries(bar foo)
© www.soinside.com 2019 - 2024. All rights reserved.