使用CMake链接到OSX下的可执行文件

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

我有一个将由可执行文件加载的插件。

可执行文件导出符号,这里是可执行文件的一些CMake:

set_target_properties(rcrl_compiler_tests PROPERTIES ENABLE_EXPORTS ON)

然后我会像这样链接到它:

target_link_libraries(test_plugin rcrl_compiler_tests)

这适用于Windows和Linux。但对于macOS却不是。我读过我需要使用-bundle_loader文档中所述的ENABLE_EXPORTS

所以我做了以下事情:

target_compile_options(test_plugin PRIVATE -Wl,-bundle_loader,$<TARGET_FILE:rcrl_compiler_tests>)

但是当我尝试编译插件时,我得到以下内容:

clang:警告:-Wl,-bundle_loader,/ Users / mario / rcrl / build / bin / rcrl_compiler_tests:'linker'输入未使用[-Wunused-command-line-argument]

生成器表达式中可执行文件的路径是正确的 - 但不使用标志本身。

而且我仍然需要从可执行文件中导出并在插件中使用的唯一2个符号的链接器错误。

知道如何解决这个问题吗?

macos dll cmake linker dynamic-linking
1个回答
1
投票

如果你使用-bundle_loader,则不需要-undefined dynamic_lookup

只需将此用于链接标志:

set_target_properties(TARGET PROPERTIES LINK_FLAGS "-undefined dynamic_lookup \
    -Wl,-no_pie \
    -Wl,-search_paths_first"
)

...其中TARGET是你的dylib

© www.soinside.com 2019 - 2024. All rights reserved.