2009-10-20 3 views
8

Ich versuche, meinen Build-Prozess mit cmake zu automatisieren. Es gibt derzeit nur ein Problem:cmake: So erstellen Sie ein Skript zum Kopieren von Dateien mit meinem Programm

Wo ist, in cmake-Philosophie (wenn es eine), die beste Stelle , um das Kopieren von Dateien zu setzen.

Ich habe eine Bibliothek und ein paar Beispiele. Die Beispiele benötigen die Daten.

ich zur Zeit folgendes:

Ich verwende einen benutzerdefinierten Befehl in jedem CMakeLists.txt dem Beispiel alle Daten in die CMAKE_CURRENT_BINARY_DIR in einem Post-Build-Schritt zu kopieren. Ich verwende dies in meinem Debugging-Workflow, so dass noch kein Installationsziel ausgeführt wird.

Das funktioniert recht gut, hat aber gewisse Nachteile:

  1. Das Kopieren erfolgt jedes Mal das Projekt erstellt wird. Bei VS 2005 tritt dies manchmal auf, auch wenn es nicht neu erstellt wird. Da die Datenordner groß sind, braucht das Kopieren Zeit und es wird ein bisschen nervig.
  2. Ich bin sicher, dass dies eine sehr ungeschickte Art ist, dies zu tun.

Ich mag diese Verzeichnisse zu den ausführbaren Pfaden kopieren, so dass ich nicht Hinweise benötigen, wie das Debug-Arbeitsverzeichnis

die perfekte Zeit zu setzen, diese Verzeichnisse zu kopieren wäre bei Cmake Konfiguration/Generationszeit , Zumindest glaube ich das. Soll ich das tun, und wie würde ich das tun?

Antwort

12

Wie kürzlich in this question gesehen, können Sie configure_file verwenden, um Dateien auf das Build-Verzeichnis zu kopieren:

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/input.txt 
    ${CMAKE_CURRENT_BINARY_DIR}/output.txt COPYONLY) 

Das macht es einmal bei der Erstellung und nur bei Bedarf.

+2

Danke! Ich bin überrascht, dass es so wenige Antworten auf diese Frage gibt. CMake wird heute weit verbreitet verwendet, aber immer noch schlecht dokumentiert. Sehr wenige Leute scheinen wirklich zu grasen. – AndreasT

+2

'cmake - hilfevoll' FTW! :-) – richq

Verwandte Themen