我需要提供一个带有静态库的SDK。我们称之为“libsdk.a”。 这个库应该是独立的,这意味着一个简单的例子“example.cpp”可以链接它而不需要任何其他库,除了系统库。
这是我的配置:
目前,我试过这个:
所以我的最后一个问题是:有什么方法可以生成包含我所有其他库的静态库,而不是系统库?
BTW,另一个有趣的话题: Combining static libraries感谢您提出任何建议让我敞开心扉!
答案 0 :(得分:1)
您要手动完成的工作是链接器的工作。虽然它是可行的,但你不应该为此烦恼。
编译libsdk.a
时,请确保其所有依赖项都是静态链接的。如果您这样做,libsdk.a
应该是独立的。静态链接意味着将代码复制到最终可执行文件中的正确位置,因此静态链接的任何内容都不需要在外部文件中提供。
答案 1 :(得分:0)
见this post on CMake mailing list。附加到消息的libutils.cmake具有执行该作业的MERGE_STATIC_LIBS()宏。在Linux(以及除OSX之外的所有其他Unix)上,它使用ar来打包和解压缩对象文件。