【发布时间】:2012-12-30 02:30:54
【问题描述】:
所以我正在用两个静态库构建一个共享库。
This answer 说这样做的方法是在我的静态库之前插入 -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
)
所以我需要在app 和models 之前添加-Wl,--whole-archive,然后在它们之后添加-Wl,--no-whole-archive(这样标准库导入不会被共享库导出)。
在 CMake 中最简单的方法是什么?
补充:所以我想尽可能使用标准的 cmake 东西,这样我就不必为 windows 构建做任何额外的工作,因为 CMake 友好地删除了编译器正在构建的平台上不支持的定义。
【问题讨论】: