1

我正在尝试使用 cmake 和 MSVC2017 在 Windows 10 上编译 libzip-1.3.0。

我已经成功编译了最新的 zlib (1.2.11),但是当我尝试编译 libzip 时,我被告知:ZLIB version too old, please install at least v1.1.2

我的 zlib.h 版本定义:

#define ZLIB_VERSION "1.2.11"
#define ZLIB_VERNUM 0x12b0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
#define ZLIB_VER_REVISION 11
#define ZLIB_VER_SUBREVISION 0

我正在运行的 cmake 命令:

cmake .. -G"Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX="C:\devel\lib\libzip" -DZLIB_LIBRARY:FILEPATH="C:\devel\lib\zlib\lib" -DZLIB_INCLUDE_DIR:PATH="C:\devel\lib\zlib"

我确实在互联网上找到了一个旧线程,其他人也有类似的问题,但是当我查看CMakeLists.txt文件的相关部分时,它现在看起来是正确的:

FIND_PACKAGE(ZLIB REQUIRED)
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
IF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")
  MESSAGE(FATAL_ERROR "-- ZLIB version too old, please install at least v1.1.2")
ENDIF(ZLIB_VERSION_STRING VERSION_LESS "1.1.2")

那么 - 为什么 zlib 1.2.11 比 1.1.2“旧”,我该如何解决这个问题并编译 libzip?

4

2 回答 2

1

事实证明,我让 cmake 看错了地方——但它没有报告 zlib 没有被发现,而是让它看起来像是它的旧版本。

cmake 命令应该使用CMAKE_PREFIX_PATH并指向 zlib 库的根目录(如下所示):

cmake .. -G"Visual Studio 15 2017 Win64" -DCMAKE_PREFIX_PATH="C:\devel\lib\zlib" -DCMAKE_INSTALL_PREFIX="C:\devel\lib\lipzip"
于 2017-10-30T02:04:08.723 回答
0

出现这个问题的原因可能是你提供了错误的ZLIB_INCLUDE_DIR,确认这个文件目录下的zlib.h,打开zlib.h看下面一行版本号是否大于1.1.2。

---zlib.h line number: 40---
#define ZLIB_VERSION "1.2.11"
#define ZLIB_VERNUM 0x12b0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
#define ZLIB_VER_REVISION 11
#define ZLIB_VER_SUBREVISION 0
于 2018-09-16T03:18:18.763 回答