【问题标题】:zlib in Qt - QtZlib not presentQt 中的 zlib - QtZlib 不存在
【发布时间】:2014-06-02 08:01:13
【问题描述】:

我正在使用 QuaZip 库,它具有 zlib 依赖项。我想在 Archlinux 和 Windows 7 下编译我的 CMake 托管应用程序,我都安装了 Qt 5.3.0。

在 Linux 上:

我在这里“how to add zlib to an existing qt installation”读到 zlib 是 Qt 安装的原生部分。但是在archlinux中没有这样的目录。 当然,我搜索了所有其他 Qt 包含目录,包括 QtCore,但没有 zlib 的迹象。另一方面,zlib 的系统安装可以通过 FindZLIB.cmake 模块在 archlinux 上找到。

在 Windows 上:

在Qt的Windows安装中,Qt包含目录下有QtZlib文件夹,所以可以包含。尽管如此,编译器总是抱怨他无法从库中链接 zlib 函数,错误日志here。我也尝试通过 TARGET_LINK_LIBRARIES 手动设置外部 zlib 库,但没有成功。

有没有人使用 CMake 在 Qt5 下链接 Zlib 的经验?

【问题讨论】:

    标签: c++ qt cmake qt5 zlib


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这对我来说是一个正确的解决方案。但是,quazip 中的包含路径必须重写才能不使用 system/qt zlib 包含。
    • @Michal:不太清楚你指的是什么。 Quazip 上游在这方面就很好......
    • 是的,但是 quazip 在其文件中使用包含“zlib.h”,默认情况下指向系统安装 zlib,而不是指向与项目一起分发的 zlib 副本。
    【解决方案2】:

    1) 你应该在 Archlinux 上使用你的包管理器,在 Windows 上使用你自己的安装。不要依赖 Qt 第三方安装。它今天可能存在,但在新版本发布时的任何特定时刻都会消失。

    这就是我建议你在 Archlinux 机器上做的事情:

    pacman -S zlib
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多