2016-10-28 5 views
1

Ich habe ein Projekt mit der folgenden StrukturGebäude Bibliotheken von Drittanbietern während des Build-Prozesses

+--foo/ 
    | 
    +-- CMakeLists.txt 
    +-- src/ 
    +-- include/ 
    +-- third-party/ 
     | 
     +-- thing.tar.gz 

Ein Schritt des Build-Prozesses aufzublasen und untar thing.tar.gz, bauen sie CMake verwenden, und einmal, dass bereit ist, fortfahren zu kompilieren und verknüpfen, was unter src (mein aktuelles Projekt) ist.

Ich würde all dies gerne aus Quelle, in einem build Verzeichnis erfolgen. Letztendlich würde ich meinen Build-Prozess sein mag wie folgt:

$ cd /path/to/where/I/want/to/build/ 
$ cmake /path/to/directory/containing/CMakeFiles.txt/ 
$ make 
# make inflates, untars, and builds thing.tar.gz 
$ ls 
# lists all the CMake stuff and the following folders: 
# bin/ -> with all my application AND thing.tar.gz executables 
# lib/ -> with all my libraries AND thing.tar.gz libraries 
# include/ -> with all my headers AND thing.tar.gz headers 

Für das Leben von mir, ich kann nicht eine einfache Lösung finden! Bis jetzt kann ich mich auf EXECUTE_PROCESS verlassen, um in einen Ordner in der Build-Struktur zu extrahieren, aber ich kann CMake nicht auf der resultierenden Bibliothek aufrufen, oder um den Rest meines Projekts zu informieren hey, ich extrahierte und baute Ihre Abhängigkeiten [hier] und da]; Sie können jetzt weiter bauen.

Wie würden Sie dieses Problem angehen?

+1

[ExternalProject_Add] (https://cmake.org/cmake/help/v3.0/module/ExternalProject.html) sollte 3D-Party-Bibliothek anmutig erstellen. In jedem Fall ** zeige deinen Code **, der nicht wie erwartet funktioniert. – Tsyvarev

+0

@Tsyvarev Ich habe keinen Code hinter EXECUTE_PROCESS (der korrekt in das Build-Verzeichnis extrahiert), weil jede Lösung, die ich online gefunden habe, so sehr kompliziert erscheint. – Escualo

Antwort

0

Verwenden Sie -DCMAKE_PREFIX_PATH=, um CMake auf die Build-Artefakte Ihrer Abhängigkeiten während des Aufrufs Ihres eigenen Projekts cmake zu verweisen.

Verwandte Themen