2017-07-08 3 views
0

Wie erstellt man ein externes Projekt, um einen Link herunterzuladen, der keine .tgz-Datei ist?cmake ExternalProject_Add, wie URL nicht tar-Datei herunterladen?

Zum Beispiel Catch bietet eine Freigabe, die eine einzige Header-Verteilung ist. Ich würde das lieber herunterladen als das Git Repo oder das .tgz Release. Aber ich habe nicht herausgefunden, wie ich CMake dazu bringen soll, das zu tun.

Ich möchte etwas tun:

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 
) 

Dies scheitert als URL geht davon aus, dass url ist eine komprimierte tar-Datei. Ich habe auch verschiedene Varianten der DOWNLOAD_COMMAND ohne Erfolg ausprobiert.

Antwort

2

Verwenden DOWNLOAD_NO_EXTRACT Option ExternalProject_Add:

einfach die Datei herunterladen und entpacken Sie es nicht; Der vollständige Pfad zur heruntergeladenen Datei ist verfügbar unter <DOWNLOADED_FILE>.

Code-Beispiel:

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 "" 
    ) 

Datei wird in <prefix>/src Verzeichnis heruntergeladen werden.


Wenn Verwendung LOG_DOWNLOAD Option neben mit DOWNLOAD_NO_EXTRACT, müssen Sie CMake 3.9 für die Arbeit richtig. Siehe diese Fehlerberichte: https://gitlab.kitware.com/cmake/cmake/issues/16544, https://gitlab.kitware.com/cmake/cmake/issues/17046.

+0

Danke. Genau danach habe ich gesucht. Danke auch für den Tipp über LOG_DOWNLOAD. Die Datei wurde heruntergeladen. CMake ist jedoch nach dem Download fehlgeschlagen, bis ich LOG_DOWNLOAD ausgeschaltet habe. Ich benutzte sogar CMakeLists 3.8.2. Es sieht also so aus, als ob es wieder kaputt gehen könnte. – Tal

+0

Ich habe dieses Problem gerade geöffnet: https://gitlab.kitware.com/cmake/cmake/issues/17046. – Tal

+1

Nachverfolgung des CMake-Problems. Dies ist in CMake 3.9 behoben und wurde in den 3.8 Baum zurück gepatcht. Wenn es also ein 3.8 Release gibt (3.8.3), sollte es auch dort behoben werden. Für weitere Informationen: https://gitlab.kitware.com/cmake/cmake/issues/17046#note_289032 – Tal

Verwandte Themen