我有一个将由可执行文件加载的插件。
可执行文件导出符号,这里是可执行文件的一些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个符号的链接器错误。
知道如何解决这个问题吗?
如果你使用-bundle_loader
,则不需要-undefined dynamic_lookup
。
只需将此用于链接标志:
set_target_properties(TARGET PROPERTIES LINK_FLAGS "-undefined dynamic_lookup \
-Wl,-no_pie \
-Wl,-search_paths_first"
)
...其中TARGET
是你的dylib