所以我正在用两个静态库构建一个共享库。
这个答案说这样做的方法是-Wl,--whole-archive
在我的静态库之前插入,-Wl,--no-whole-archive
在它们之后。
因此,我目前在 cmake 中为共享库提供的是:
add_library(wittyPlus SHARED empty.cpp)
target_link_libraries(wittyPlus
${wtdbosqlite}
${WT_LIBRARIES}
${DB_LIBRARIES}
${Boost_LIBRARIES}
app models
)
所以我需要的是它添加-Wl,--whole-archive
之前app
和models
,然后-Wl,--no-whole-archive
在它们之后(这样标准库导入不会被共享库导出)。
在 CMake 中最简单的方法是什么?
补充:所以我想尽可能多地使用标准的 cmake 东西,这样我就不必为 windows 构建做任何额外的工作,因为 CMake 友好地删除了平台上不支持的编译器定义。建成。