zlib-1.2.11是#34;太旧了#34; - 编译libzip-1.3.0需要1.1.2

时间:2017-10-29 22:55:24

标签: c cmake visual-studio-2017 zlib libzip

我尝试使用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"

我确实在互联网上找到了old thread其他人有类似问题,但是当我查看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?

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分: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