【发布时间】:2015-10-08 19:32:33
【问题描述】:
我正在将一个 AutoTools 项目移植到 CMake。
AutoTools 的作用:
- 构建一些静态库
- 构建一些共享库并将静态库链接到共享库中
- 构建可执行文件,将其链接到共享库
我用 CMake 做了什么:
- 构建一些静态库 -
add_library(staticfoo <src>) - 构建一些共享库 -
add_library(sharedfoo SHARED <src>)并链接它们 -target_link_libraries(sharedfoo staticfoo) - 构建一个可执行文件,将其链接到共享库 -
target_link_libraries(exe sharedfoo),但这也将静态库再次拖入。
因此,生成的可执行文件链接命令除了共享库之外还有静态库。这与 AutoTools 项目生成的命令不对应。
我尝试过target_link_libraries(sharedfoo PRIVATE staticfoo),但这并没有将静态库中的符号获取到共享库的接口中。
如何在没有“传递”行为的情况下获取符号?
(以独立于平台的方式)
【问题讨论】: