Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C zlib-1.2.11是;“太老了”编译libzip-1.3.0需要1.1.2_C_Cmake_Visual Studio 2017_Zlib_Libzip - Fatal编程技术网

C zlib-1.2.11是;“太老了”编译libzip-1.3.0需要1.1.2

C zlib-1.2.11是;“太老了”编译libzip-1.3.0需要1.1.2,c,cmake,visual-studio-2017,zlib,libzip,C,Cmake,Visual Studio 2017,Zlib,Libzip,我正在尝试使用cmake和MSVC2017在Windows 10上编译libzip-1.3.0 我已经成功编译了最新的zlib(1.2.11),但当我尝试编译libzip时,我被告知:zlib版本太旧,请至少安装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

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

我已经成功编译了最新的zlib(1.2.11),但当我尝试编译libzip时,我被告知:
zlib版本太旧,请至少安装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?

结果是,我让cmake找错了地方-但它没有报告zlib没有被发现,而是让它看起来好像有一个旧版本

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


此问题的原因可能是您提供了错误的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
---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