2017-10-02 1 views
0

J'essaye de compiler libzip sous Windows en utilisant CMake pour générer des fichiers makefiles. Libzip a besoin zlib donc je fais ce qui suit:CMake: Définir le chemin zlib

mkdir build 
cd build 
cmake -DZLIB_LIBRARY=../../../zlib-1.2.11 -DZLIB_INCLUDE_DIR=../../../zlib-1.2.11 .. 

Cela ne fonctionne pas, cependant. Je reçois l'erreur suivante:

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) 

Pourquoi est-ce? J'ai défini ZLIB_LIBRARY et ZLIB_INCLUDE_DIR pour pointer vers le dernier zlib.

J'ai aussi essayé les éléments suivants:

mkdir build 
cd build 
cmake .. -DZLIB_LIBRARY=../../../zlib-1.2.11 -DZLIB_INCLUDE_DIR=../../../zlib-1.2.11 

Quand je lance CMake comme ça, je reçois les deux avertissements suivants:

CMake Warning: 
Manually-specified variables were not used by the project: 
ZLIB_INCLUDE_DIR 
ZLIB_LIBRARY 

Par rapport à la première approche, cependant, construire les fichiers sont maintenant écrits dans mon répertoire de construction. Lors de l'exécution nmake, cependant, seul zlib semble être construit. libzip lui-même n'est pas construit du tout.

Je suis à court d'idées ici. Qu'est-ce que je fais mal?

+0

[Documentation] (https://cmake.org/cmake/help/v3.2/module/FindZLIB.html) suggère d'utiliser 'ZLIB_ROOT' comme un indice pour CMake sur l'emplacement de zlib. Alternativement, vous pouvez [utiliser] (https://stackoverflow.com/questions/34795816/hinting-findname-cmake-files-with-a-custom-directory/34797156#34797156) * CMAKE_PREFIX_PATH * dans le même but. – Tsyvarev

+0

La définition de 'ZLIB_ROOT' génère l'erreur suivante: CMake Erreur dans C:/Program Files (x86) /CMake/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138 (message): Impossible de trouver ZLIB (manquant: ZLIB_LIBRARY) (trouvé la version "1.2.11") – Andreas

+1

Cette erreur signifie qu'il peut trouver les en-têtes, mais pas la bibliothèque elle-même. – MuertoExcobito

Répondre

1

Pour répondre à ma propre question, l'utilisation de chemins relatifs pour ZLIB_LIBRARY et ZLIB_INCLUDE_DIR était le problème. Lorsque vous utilisez des chemins absolus, cela fonctionne très bien. En outre, ZLIB_LIBRARY doit pointer vers la bibliothèque elle-même. Voici ma ligne de construction finale qui fonctionne:

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 ..