CMake-构建静态库的困难

时间:2013-09-11 00:32:13

标签: dll cmake static-libraries nmake

所以我一直在尝试构建libarchive几天,遵循本指南和许多其他线程:https://github.com/libarchive/libarchive/wiki/BuildInstructions

我想要一个支持LZMA,zlib和bzip2的静态库。我也得到了这些的静态版本(lib's)

我不能让它正常工作。我使用CMAKE生成VS2010和NMAKE的make文件。使用这两个选项,东西编译得很好,但是当我尝试使用生成的archive_static.lib时,在我的项目中我得到了大量未解析的外部。编译.dll版本的库没有未解析的外部工作,但它开始要求zlib.dll,bzip2.dll等,我没有,也不想使用。

我想我需要用cmake设置一些标志,但我不知道该怎么做。

非常感谢任何帮助。  http://www.libarchive.org/

1 个答案:

答案 0 :(得分:1)

我无法确定这是否发生在这里,但请记住,将二进制文件链接到静态库时,其外部依赖项不一定嵌入到它中,这意味着您可能需要提供静态库您的程序通过libarchive间接依赖的库,即您的情况下明确的LZMA,zlib和bzip2。

此外,在链接静态和动态时,Windows上存在一些混淆,因为在两种情况下都提供.lib文件,因此很容易混合并提供动态链接.lib,而不是静态版。如果你这样做,链接器可能拒绝链接你的程序(特别是在boost时发生),或者可能链接得很好,然后,在执行时,操作系统将需要相应的.dll。

相关问题