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