我尝试使用CMake在Windows上编译libzip来生成makefile。 Libzip需要zlib,所以我要做以下事情:
mkdir build
cd build
cmake -DZLIB_LIBRARY=../../../zlib-1.2.11 -DZLIB_INCLUDE_DIR=../../../zlib-1.2.11 ..
但是,这并不起作用。我收到以下错误:
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)
为什么?我已将ZLIB_LIBRARY
和ZLIB_INCLUDE_DIR
定义为指向最新的zlib。
我还尝试过以下方法:
mkdir build
cd build
cmake .. -DZLIB_LIBRARY=../../../zlib-1.2.11 -DZLIB_INCLUDE_DIR=../../../zlib-1.2.11
当我像这样运行CMake时,我收到以下两个警告:
CMake Warning:
Manually-specified variables were not used by the project:
ZLIB_INCLUDE_DIR
ZLIB_LIBRARY
然而,与第一种方法相比,构建文件现在被写入我的构建目录。但是,在运行nmake
时,似乎只构建了zlib。 libzip本身并不构建。
我在这里没有想法。我做错了什么?
答案 0 :(得分:4)
要回答我自己的问题,使用ZLIB_LIBRARY
和ZLIB_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 ..