Nach FAQ erstellt CMake kein make dist
Ziel und Quelle Paket kann mit CPack erstellt werden. Aber CPack erstellt nur einen Tarball des Quellverzeichnisses mit allen Dateien, die nicht mit Mustern in CPACK_SOURCE_IGNORE_FILES
übereinstimmen.
Auf der anderen Seite bündelt make dist
, das von autotools generiert wird, nur die Dateien, die es kennt, hauptsächlich Quellen, die für die Kompilierung benötigt werden.
Jeder hat eine clevere Möglichkeit, ein Quellpaket mit nur Dateien zu erstellen, die in CMakeLists.txt (und seinen Abhängigkeiten) angegeben sind?
Ich habe eine Weile darüber nachgedacht und ich werde nicht so tun, als könnte ich ein make dist
simulieren, ohne dass dies direkt von CMake selbst unterstützt wird.
Das Problem ist, dass Sie mit CMake auf der einen Seite eine Menge Dateiabhängigkeiten hinzufügen können (zB um Bibliotheken vorzuspielen) und auf der anderen Seite CMake nicht über Abhängigkeiten, die direkt von der generierten Buildumgebung selbst überprüft werden (z. B. Header-Abhängigkeiten).
Hier ist also ein Code, der nur alle CMakeList.txt
und Quelldateien sammelt, die mit irgendwelchen Build-Zielen angegeben wurden:
Hinweis : Die verwendete Eigenschaft BUILDSYSTEM_TARGETS
muss bei mindestens CMake Version 3.7
Ich sehe den obigen Code als Ausgangspunkt und Beweis des Konzepts. Sie können Bibliotheken, Header usw. auf Bedarfsbasis hinzufügen, aber Sie sollten wahrscheinlich nur pack , um Ihr Gebot zu erfüllen.
Als Ausgangspunkt siehe z.B. der Link @ usr1234567 in den Kommentaren zur Verfügung gestellt.
Referenzen