2017-07-08 3 views
0

外部プロジェクトを設定して.tgzファイルではないリンクをダウンロードするにはどうすればよいですか?cmake ExternalProject_ URL以外のファイルをダウンロードする方法を追加しますか?

たとえば、Catchは、単一のヘッダー配布であるリリースを提供します。私はgit repoや.tgzのリリースではなく、これをダウンロードしたいと思っています。しかし、私はCMakeにこれをする方法を理解していない。

私のような何かをしたいと思います:

Include(ExternalProject) 
ExternalProject_Add(
    catch 
    PREFIX ${CMAKE_BINARY_DIR}/catch 
    URL https://github.com/philsquared/Catch/releases/download/v1.9.6/catch.hpp ${CMAKE_BINARY_DIR}/catch 
    CONFIGURE_COMMAND "" 
    BUILD_COMMAND "" 
    INSTALL_COMMAND "" 
    LOG_DOWNLOAD ON 
) 

URLは、URLが圧縮されたtarファイルであることを前提とし、これに失敗しました。私はDOWNLOAD_COMMANDのいろいろなバリエーションを試してみました。

答えて

2

利用ExternalProject_AddDOWNLOAD_NO_EXTRACTオプション:

だけでファイルをダウンロードし、それを抽出しません。ダウンロードしたファイルのフルパスは<DOWNLOADED_FILE >として入手できます。

コード例:

ExternalProject_Add(
    catch 
    PREFIX ${CMAKE_BINARY_DIR}/catch 
    URL https://github.com/philsquared/Catch/releases/download/v1.9.6/catch.hpp 
    DOWNLOAD_NO_EXTRACT 
    CONFIGURE_COMMAND "" 
    BUILD_COMMAND "" 
    INSTALL_COMMAND "" 
    ) 

ファイルが<prefix>/srcディレクトリにダウンロードされます。


DOWNLOAD_NO_EXTRACTと一緒に使用LOG_DOWNLOADオプションは、あなたが正しく仕事のためにCMake 3.9が必要な場合。これらのバグレポート:https://gitlab.kitware.com/cmake/cmake/issues/16544https://gitlab.kitware.com/cmake/cmake/issues/17046を参照してください。

+0

ありがとうございました。それは私が探していたものです。また、LOG_DOWNLOADに関するヒントもありがとうございます。ファイルは正常にダウンロードされていました。しかし、私がLOG_DOWNLOADを無効にするまで、CMakeはダウンロード後に失敗していました。私はCMakeLists 3.8.2を使っていました。だから、もう一度壊れるかもしれないようです。 – Tal

+0

私はこの問題を開けたばかりです:https://gitlab.kitware.com/cmake/cmake/issues/17046。 – Tal

+1

CMake問題のフォローアップ。これはCMake 3.9で修正され、3.8ツリーにバックパッチされているので、別の3.8リリース(3.8.3)があれば、それも修正する必要があります。詳細情報:https://gitlab.kitware.com/cmake/cmake/issues/17046#note_289032 – Tal

関連する問題