Kopieren von Dateien und bindet diese in eine CPack-Archiv
So, es gibt zahlreiche Möglichkeiten zum kopieren von Dateien (und Verzeichnisse) CMake
Laufzeit (file(COPY ...)
, configure_file(...)
und add_custom_command()
alle arbeiten*), aber ich habe noch nicht herausgefunden, wie man eine Datei oder ein Verzeichnis kopiert, aus der Quelle zu bauen, die Ordner erscheinen in ein Archiv erzeugt, die von CPack. Ich dachte, dass diese SO beantworten würde es zu beheben, als es tatsächlich links das kopieren auf ein target, die dann eine Installation verknüpft sein:
install(TARGET mytarget DESTINATION bin)
in der Erwägung, dass habe ich erkennen, dass die file()
und configure_file()
Befehle, die nicht über eine offensichtliche Art und Weise Hinzugefügt werden, um ein Ziel. Aber, das hat nicht funktioniert. Also, eine einfache CMakeLists.txt, wie unten angezeigt, wie bekomme ich alle Dateien (einschließlich der exmaple
Verzeichnis), werden in das Archiv?!
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
enable_language(FORTRAN)
add_executable(mytarget ${PROJECT_SOURCE_DIR}/myprog.for)
install(TARGETS mytarget DESTINATION bin)
add_custom_command(TARGET mytarget PREBUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/examplefiles ${PROJECT_BINARY_DIR}/examplefiles)
set(CPACK_GENERATOR "TGZ")
include(CPack)
* Ich habe noch nicht herausgefunden, welches eine dieser 3 Methoden ist eigentlich (die meisten?) korrekt - so ist jede Beratung über diese zu werden enorm geschätzt
- Wie würde diese Arbeit für ein source-Paket statt binary-distribution? Die CPack-source-Paket-generator scheint eher begrenzt zu sein in Ihrer Konfigurierbarkeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie in der Dokumentation der CPack-Modul, das binäre Installationsprogramme erstellt von CPack enthalten alles installiert via CMake ist
INSTALL
Befehl. Damit die ausführbare Dateimytarget
in deinem Beispiel werden in der CPack-Archiv, weil Sie dieinstall
Befehl für das kopieren in diebin
Ordner.Auch CPack gehören die
example
Ordner in die generierte Archiv, können Sie dieDIRECTORY
Variante der Befehl installieren in der folgenden Weise:Den
file(COPY ...)
undconfigure_file(...)
haben keinen Einfluss auf das, was installiert ist, von CPack. Beide Befehle sind in der Regel verwendet, um Dateien von der source-tree, um den binären Baum auf die Konfiguration der CMake-Projekt.Mit
add_custom_command
mit${CMAKE_COMMAND} -E copy_directory ...
verschieben das eigentliche kopieren der Dateien auf die Bauzeit des Projekts. Es wird jedoch nicht auslösen die Aufnahme der kopierten Dateien in der CPack-Archiv, entweder.install(DIRECTORY...
funktionierte perfekt vielen Dank