2017-10-02 55 views
0

私はmakefileを生成するためにCMakeを使ってWindows上でlibzipをコンパイルしようとしています。 Libzipにはzlibが必要なので、私は次のようにしています:CMake: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を指すようにZLIB_LIBRARYZLIB_INCLUDE_DIRを定義しました。私はまた、次のことを試してみた

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

私はこのようにCMakeを実行すると、私は、次の2回の警告を得る:構築、しかし、最初のアプローチと比較して

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

をファイルがビルドディレクトリに書き込まれるようになりました。しかし、nmakeを実行すると、zlibだけがビルドされているように見えます。 libzip自体はまったく構築されていません。

私はここでアイデアがありません。私は間違って何をしていますか?

+0

[ドキュメント](https://cmake.org/cmake/help/v3.2/module/FindZLIB.html)ヒントとして 'ZLIB_ROOT'を使用することを示唆している:ここで働く私の最終ビルドラインがありますzlibの場所についてのCMakeのために。あるいは、同じ目的のために、CMAKE_PREFIX_PATH *(https://stackoverflow.com/questions/34795816/hinting-findname-cmake-files-with-a-custom-directory/34797156#34797156)を使用することもできます。 – Tsyvarev

+0

'ZLIB_ROOT'を設定すると、次のエラーが発生します。Cakeの//Program Files(x86)/Cake/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138(メッセージ)のエラー: ZLIBが見つからない(ZLIB_LIBRARY )(見つかったバージョン "1.2.11") – Andreas

+1

このエラーは、ヘッダーを見つけることができますが、ライブラリー自体は見つけることができないことを意味します。 – MuertoExcobito

答えて

1

私自身の質問に答えるには、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 .. 
関連する問題