libzip with Visual Studio 2010

libzip with Visual Studio 2010

本文关键字:2010 Studio Visual with libzip      更新时间:2023-10-16

如何为 Visual Studio 2010 编译 libzip?

编辑:

在开始这里提供的答案之前,似乎这可能不再是克劳斯纳下面回答@Thomas的问题。


以下内容应该为您提供VS10解决方案:

  1. 如果尚未安装,请安装 CMake

  2. 下载并解压缩 zlib 到 例如 C:devel . 下载链接大约在主页的一半。 目前这提供了 zlib 版本 1.2.7。

    • 要解决此仅影响 64 位 Windows 的 CMake 错误,请添加

      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 的末尾

  3. 下载并解压缩 libzip 以例如 C:devel

  4. VS10 命令提示符下,cd C:develzlib-1.2.7

  5. mkdir build && cd build

  6. cmake .. -G"Visual Studio 10" -DCMAKE_INSTALL_PREFIX="C:develinstalledzlib" 这会将安装路径设置为 C:develinstalledzlib 而不是默认C:Program Fileszlib。 对于 64 位 Windows,请使用 "Visual Studio 10 Win64" 作为-G参数。

  7. msbuild /P:Configuration=Debug INSTALL.vcxproj

  8. msbuild /P:Configuration=Release INSTALL.vcxproj

  9. cd C:devellibzip-0.10.1

  10. mkdir build && cd build

  11. cmake .. -G"Visual Studio 10" -DCMAKE_PREFIX_PATH="C:develinstalledzlib" 将路径设置为安装 zlib 的位置,以便 CMake 可以找到 zlib 的包含文件和库。 同样,对于 64 位 Windows,请使用 "Visual Studio 10 Win64" 作为-G参数。

这应该会导致C:devellibzip-0.10.1buildlibzip.sln 。 看起来代码中有一些特定于POSIX的问题,但它们应该相当容易解决(例如,在zipconf.h中#include <inttypes.h>需要替换为#include <stdint.h>;有一些snprintf调用需要替换为_snprintf(。

我不能发表评论,所以除了弗雷泽的回答之外:在最后几天,libzip 的最新存储库版本应该在没有额外补丁的情况下在 VS 上编译。请尝试一下,如果零件仍然丢失,请让开发人员知道。

无法评论上面的答案,但试图让它工作,最终发现配置属性下的输出目录和调试中的 comand。

您可以删除ALL_BUILD,ZERO_CHECK,安装和PACKAGE,它将构建良好,没有任何链接错误或Linux特定错误。

> 使用 libzip-1.0.1、zlib-1.2.8 和 VS Community 2013。

添加到路径:

C:\程序文件 (x86(\CMake\bin;C:\Windows\Microsoft.NET\Framework64\v4.0.30319

cmake 线变为:

cmake .. -G"Visual Studio 12 Win64" -DCMAKE_INSTALL_PREFIX="C:develinstalledzlib"

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-1.2.8 路径%ZLIB_DIR%的环境变量,
  • %LIBZIP_DIR% libzip-1.0.1 的路径
  • VS 2015 速成版,以及
  • 该文件%LIBZIP_DIR%/lib/zip_source_filep.c根据 http://hg.nih.at/libzip/rev/80457805a1e7 进行修补,

构建 zlib 和 libzip 的过程是这样的:


构建 zlib

> 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


构建库压缩

> 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.8contribvstudiovc10zlibvc.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文件所在的位置(。

Christian Severin给出的答案对我帮助很大,但需要对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