CMake:设置 zlib 路径

And*_*eas 4 cmake

我正在尝试使用 CMake 在 Windows 上编译 libzip 以生成 makefile。Libzip 需要 zlib,所以我正在执行以下操作:

mkdir build
cd build
cmake -DZLIB_LIBRARY=../../../zlib-1.2.11 -DZLIB_INCLUDE_DIR=../../../zlib-1.2.11 ..
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用。我收到以下错误:

CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
Run Code Online (Sandbox Code Playgroud)

这是为什么?我已经定义ZLIB_LIBRARYZLIB_INCLUDE_DIR指向最新的 zlib。

我还尝试了以下方法:

mkdir build
cd build
cmake .. -DZLIB_LIBRARY=../../../zlib-1.2.11 -DZLIB_INCLUDE_DIR=../../../zlib-1.2.11
Run Code Online (Sandbox Code Playgroud)

当我像这样运行 CMake 时,我收到以下两个警告:

CMake Warning:
Manually-specified variables were not used by the project:
ZLIB_INCLUDE_DIR
ZLIB_LIBRARY
Run Code Online (Sandbox Code Playgroud)

然而,与第一种方法相比,构建文件现在被写入我的构建目录。nmake但是,在运行时,似乎只构建了 zlib。libzip 本身根本没有构建。

我在这里没有想法。我究竟做错了什么?

And*_*eas 5

要回答我的问题,使用相对路径ZLIB_LIBRARYZLIB_INCLUDE_DIR是问题。使用绝对路径时,它工作得很好。此外,ZLIB_LIBRARY需要指向库本身。这是我的最终构建线,它有效:

cmake -DZLIB_INCLUDE_DIR=d:\mystuff\zlib-1.2.11 -DZLIB_LIBRARY=d:\mystuff\zlib-1.2.11\build\zlibstatic.lib -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release ..
Run Code Online (Sandbox Code Playgroud)