我正在将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),但这并不能将符号从静态库获取到共享库的接口中。
如何获得没有“传递”行为的符号?
(以与平台无关的方式)
据我所知,CMake不允许混合使用STATIC和SHARED库。
如果您的staticfoo库仅用作其他库/可执行文件的一部分,则可以将其定义为
add_library(staticfoo OBJECT <src>)
Run Code Online (Sandbox Code Playgroud)
并在构建其他库时用作某种来源:
add_library(sharedfoo SHARED <src> $<TARGET_OBJECTS:staticfoo>)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参见有关add_library的文档。
| 归档时间: |
|
| 查看次数: |
9423 次 |
| 最近记录: |