1
私のプロジェクトで使用するにはzlibをダウンロードする必要があります。 私はexternlproject_add()を使ってすべてのzlibリポジトリをダウンロードし、ビルドしてインストールします。 その後、zlibリポジトリの一部であるlib:minizipをインストールします。externalproject_add()の後にadd_subdirectoryを追加する方法は?
この依存関係をcmakeに設定するにはどうすればよいですか?
のzlibモジュール:
cmake_minimum_required (VERSION 2.8.7)
include (ExternalProject)
if(UNIX)
# An external project for zlib
SET (GIT_URL https://github.com/madler/zlib.git)
SET (ZLIB_INSTALL ${CMAKE_CURRENT_BINARY_DIR})
SET (ZLIB_INCLUDE ${CMAKE_BINARY_DIR}/include/zlib)
SET (ZLIB_STATIC ${CMAKE_BINARY_DIR}/lib/libz.a)
SET (MINIZIP_DIR ${CMAKE_CURRENT_BINARY_DIR}/ZLIB/src/ZLIB/contrib/minizip)
ExternalProject_Add(zlib
PREFIX zlib
GIT_REPOSITORY ${GIT_URL}
INSTALL_DIR ${ZLIB_INSTALL}
PATCH_COMMAND ${CMAKE_COMMAND} -E remove <SOURCE_DIR>/zconf.h
BUILD_IN_SOURCE 1
PATCH_COMMAND ""
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --includedir=${ZLIB_INCLUDE}
)
find_package(ZLIB REQUIRED)
if(ZLIB_FOUND)
add_subdirectory (${MINIZIP_DIR})
endif(ZLIB_FOUND)
SET (ZLIB_INCLUDE_DIR ${ZLIB_INSTALL}/include/zlib)
SET (ZLIB_LIBRARY "${ZLIB_INSTALL}")
ADD_LIBRARY (ZLIB_LIB STATIC IMPORTED DEPENDS zlib)
SET_TARGET_PROPERTIES (ZLIB_LIB PROPERTIES IMPORTED_LOCATION "${ZLIB_STATIC}")
endifは(UNIX)このzlibのモジュールで
私がエラーを持って、そのディレクトリ以下の
/ホーム/ LAIS/Imagens /エージェント/構築/ ZLIB/src/ZLIB/contrib/minizip
私はまだ実行していません
cmakeの。..
そして、それは本当です。まだ存在しません。私はそれをcmakeに伝えるべきです。しかし、私はそれを行う方法を知らない。
'find_package'が' ExternalProject_Add'を介してZLIBインストールを見つけたら、あなたは**間違っています**。 'find_package'が実行されるとき(* configuration * stage)、' zlib'ソースもダウンロードされません。例えば、 [この質問](http://stackoverflow.com/questions/6351609/cmake-linking-to-library-download-from-externalproject-add)または[その1](http://stackoverflow.com/questions/17446981)/cmake-externalproject-add-and-findパッケージ)。 'add_subdirectory'と同じ問題です。 – Tsyvarev
'add_subdirectory'の代わりに' ExternalProject_Add'手段を使ってminizipを作成することはあなたの目的に合っていますか? – Tsyvarev
zlibプロジェクトにはCMakeLists.txtファイルがありますので、[こちら](http://stackoverflow.com/a/31622855/1938798)に記載されている方法と同様の方法でビルドに反映させることもできます。その後、ライブラリなどを手動で定義する必要はなく、プロジェクトをスーパービルドに変換する必要はありません。 –