在Qt中使用zlib - QtZlib不存在

6
我正在使用QuaZip库,它有zlib依赖。我想在Archlinux和Windows 7下编译我的CMake管理的应用程序,在两个操作系统中都安装了Qt 5.3.0。
在Linux上:
我在这里读到“{{link1:how to add zlib to an existing qt installation}}”,其中zlib是Qt安装的本地部分。但是在archlinux中没有这样的目录。当然,我搜索了所有其他Qt包括目录,包括QtCore,但没有发现zlib的迹象。另一方面,在archlinux上可以通过FindZLIB.cmake模块找到系统安装的zlib。
在Windows上:
在Qt的Windows安装中,Qt include目录中有QtZlib文件夹,因此可以包含它。尽管如此,编译器总是抱怨无法从库中链接zlib函数,错误日志here。我还尝试通过TARGET_LINK_LIBRARIES手动设置外部zlib库,但没有成功。
有人有使用CMake连接Qt5下Zlib的经验吗?
2个回答

12

Qt的zlib是一个内部实现细节。你不应该使用它。你需要链接自己的zlib副本,就像你如果不使用Qt一样需要。


谢谢,这对我来说是正确的解决方案。但是,quazip中的路径必须重新编写,以便不使用系统/ qt zlib 包含文件。 - Michal
@Michal:不太确定你指的是什么。Quazip上游在这方面表现得非常好... - László Papp
是的,但是quazip在其文件中使用了“zlib.h”的包含方式,默认情况下指向系统安装的zlib,而不是我与项目一起分发的zlib副本。 - Michal

1

1)在Archlinux上,您应该使用软件包管理器,并在Windows上使用自己的安装方式。不要依赖Qt第三方安装程序。它可能存在于今天,但在新版本发布时随时可能消失。

以下是我建议您在Archlinux上进行的操作:

pacman -S zlib

2) 同时,在您的 CMakeLists.txt 中,您应该使用 FindZLIB.cmake 以以下方式查找 zlib:

find_package( ZLIB REQUIRED )
if ( ZLIB_FOUND )
    include_directories( ${ZLIB_INCLUDE_DIRS} )
    target_link_libraries( YourProject ${ZLIB_LIBRARIES} )
endif( ZLIB_FOUND )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接