libzip с Visual Studio 2010
Есть ли документация для компиляции libzip для Visual Studio 2010? Все, что я видел на веб-сайте libzip, и Google не дали результатов.
8 ответов
Редактировать:
Прежде чем приступить к ответу, представленному здесь, кажется, что это больше не проблема, описанная в ответе @Thomas Klausner ниже.
Следующее должно дать вам решение VS10:
Если вы еще этого не сделали, установите CMake
Загрузите и распакуйте zlib, например, в
C:\devel
, Ссылки для скачивания находятся примерно на полпути вниз по главной странице. В настоящее время это обеспечивает zlib версии 1.2.7.Чтобы обойти эту ошибку CMake, которая касается только 64-битной Windows, добавьте
if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND MSVC) set_target_properties(zlibstatic PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64") endif()
до конца C:\devel\zlib-1.2.7\CMakeLists.txt
Загрузите и распакуйте libzip, например, в
C:\devel
В командной строке VS10
cd C:\devel\zlib-1.2.7
mkdir build && cd build
cmake .. -G"Visual Studio 10" -DCMAKE_INSTALL_PREFIX="C:\devel\installed\zlib"
Это устанавливает путь установкиC:\devel\installed\zlib
а не по умолчаниюC:\Program Files\zlib
, Для 64-битной Windows используйте"Visual Studio 10 Win64"
как-G
параметр.msbuild /P:Configuration=Debug INSTALL.vcxproj
msbuild /P:Configuration=Release INSTALL.vcxproj
cd C:\devel\libzip-0.10.1
mkdir build && cd build
cmake .. -G"Visual Studio 10" -DCMAKE_PREFIX_PATH="C:\devel\installed\zlib"
Установите путь к тому месту, где вы установили zlib, чтобы CMake мог найти включаемые файлы и библиотеки zlib. Опять же, для 64-битной Windows используйте"Visual Studio 10 Win64"
как-G
параметр.
Это должно привести к C:\devel\libzip-0.10.1\build\libzip.sln
, Похоже, в коде есть несколько специфичных для POSIX проблем, но, надеюсь, их будет довольно легко решить (например, в zipconf.h). #include <inttypes.h>
необходимо заменить на #include <stdint.h>
; Есть некоторые snprintf
звонки, требующие замены, например _snprintf
).
Я не могу комментировать, так что просто в дополнение к ответу Фрейзера: в последние дни последняя версия репозитория libzip должна компилироваться на VS без дополнительных исправлений. Пожалуйста, попробуйте и сообщите разработчикам, если части все еще отсутствуют.
Не могу прокомментировать ответ выше, но пытался заставить это работать, и в конце концов обнаружил, что выходной каталог в свойствах конфигурации и команда в отладке.
Вы можете удалить ALL_BUILD, ZERO_CHECK, INSTALL и PACKAGE, и он будет прекрасно работать без каких-либо ошибок компоновки или ошибок Linux.
Использование libzip-1.0.1, zlib-1.2.8 и VS Community 2013.
Добавлено в путь:
C: \ Program Files (x86) \ CMake \ bin; C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319
Строка Cmake стала:
cmake .. -G"Visual Studio 12 Win64" -DCMAKE_INSTALL_PREFIX="C:\devel\installed\zlib"
devel \ libzip-1.0.1 \ lib \ zip_source_filep.c: 189 изменено:
mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);
чтобы:
mask = umask(_S_IREAD | _S_IWRITE);
С помощью
- переменная окружения
%ZLIB_DIR%
для пути к zlib-1.2.8, %LIBZIP_DIR%
для пути к libzip-1.0.1- VS 2015 Express Edition, и
- файл
%LIBZIP_DIR%/lib/zip_source_filep.c
исправлено в соответствии с http://hg.nih.at/libzip/rev/80457805a1e7,
процесс сборки zlib и libzip становится таким:
Здание злиб
> cd /d %ZLIB_DIR% && md build & cd build
> cmake .. -G"Visual Studio 14 2015 Win64"- DCMAKE_INSTALL_PREFIX="%ZLIB_DIR%"
> msbuild /P:Configuration=Debug INSTALL.vcxproj
> msbuild /P:Configuration=Release INSTALL.vcxproj
Сборка libzip
> cd /d %LIBZIP_DIR% && md build & cd build
> cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_PREFIX_PATH="%ZLIB_DIR%"
> msbuild /P:Configuration=Debug ALL_BUILD.vcxproj
> msbuild /P:Configuration=Release ALL_BUILD.vcxproj
Готово!
(Как видите, @MikeLischke, CMake действительно иногда работает из коробки)
В текущей версии zlib есть вклад для этого:
zlib-1.2.8\contrib\vstudio\vc10\zlibvc.sln
Я получил ошибку при загрузке, потому что на моей машине была недопустимая конфигурация, но об этом позаботилась перекомпиляция. Мне также пришлось изменить свойства проекта>Configuration Properties>Linker>Input>Additional Dependencies
для конфигурации отладки изменить zlibwapi.lib
в zlibwapid.lib
,
В Visual Studio 2015, Win64:
Если сборка libzip завершилась неудачно с таким сообщением:
Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.8").
Все, что вам нужно сделать, это скопировать сгенерированные zlib.dll/zlibd.zll и zlib.lib/zlibd.lib в верхнюю часть каталога zlib (где находятся файлы.h/.c).
Ответ Кристиана Северина мне очень помог, но потребовались некоторые обновления для VS2019 и 32-разрядной версии:
- При сборке с VS 2019 необходимо использовать параметр -A, а не «Win64».
- При сборке с VS 2019 32-разрядный архив - это Win32, а не x86.
- В разделе "Building zlib" есть опечатка, это должно быть
Win64" -DCMAKE_...
, с пробелом перед тире
Вот рабочий пример с VS2019 и 32-битной сборкой:
cd /d %ZLIB_DIR% && md build & cd build
cmake .. -G"Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX="%ZLIB_DIR%" -AWin32
msbuild /P:Configuration=Release INSTALL.vcxproj
cd /d %LIBZIP_DIR% && md build & cd build
cmake .. -G"Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX="%ZLIB_DIR%" -AWin32
msbuild /P:Configuration=Release ALL_BUILD.vcxproj