zlib-1.2.11 слишком стар — для компиляции libzip-1.3.0 требуется 1.1.2

Я пытаюсь скомпилировать libzip-1.3.0 в Windows 10, используя cmake и MSVC2017.

Я успешно скомпилировал этот последний 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?


person HorusKol    schedule 29.10.2017    source источник


Ответы (2)


Оказывается, я заставил 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"
person HorusKol    schedule 30.10.2017

Причиной этой проблемы может быть то, что вы указали неправильный 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
person ShareMemory    schedule 16.09.2018