QMake - So kopieren Sie eine Datei in die Ausgabe
Wie kann ich kopieren Sie eine Datei aus meinem Projekt, um die Ausgabe-Verzeichnis mit qmake?
Ich kompiliere unter Linux, aber in Zukunft werde ich es kompilieren unter Mac und Windows.
InformationsquelleAutor der Frage Raphael | 2010-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel aus einem unserer Projekte. Es zeigt, wie das kopieren von Dateien auf die
DESTDIR
für Windows und Linux.InformationsquelleAutor der Antwort sje397
Können Sie ein qmake-Funktion für Wiederverwendbarkeit:
dann verwenden Sie es wie folgt:
InformationsquelleAutor der Antwort Jake Petroules
Wenn du make installieren, können Sie die INSTALLIERT variable qmake. Hier ist ein Beispiel:
dann mittels 'make install'
InformationsquelleAutor der Antwort Caleb Huitt - cjhuitt
Ich fand, ich hatte zum ändern der Antwort sje397. für Qt5 Beta1 zusammen mit QtCreator 2.5.2. Ich benutze dieses Skript zu kopieren, die qml-Dateien in das Zielverzeichnis als eine neben Schritt, nachdem der Bau abgeschlossen ist.
Meine .pro Datei hat folgenden code
}
Hinweis, dass ich die $$PWD_WIN zur Versorgung der vollständige Pfad zu der Quell-Datei den Befehl kopieren.
InformationsquelleAutor der Antwort eatyourgreens
Erstellen Sie eine Datei
copy_files.prf
in einem der Pfade, die qmake verwendet für config features. Die Datei sollte wie folgt Aussehen:Wie es funktioniert
Den ersten Teil definiert eine extra compiler die lese-Eingabe-Dateinamen aus der
COPY_FILES
variable. Der nächste Teil beschreibt die Funktion, die Sie verwenden werden, zu synthetisieren, eine Ausgabedatei für jeden entsprechenden Eingang. Dann definieren wir die Befehle zum aufrufen dieser "compiler", je nachdem, welche Art von shell, die wir sind.Dann definieren wir eine extra makefile-target
copy_files.cookie
die abhängig von der Ziel -compiler_copy_files_make_all
. Dies ist der name, der das Ziel, das qmake erzeugt für die extra-compiler definierten wir im ersten Schritt. Dies bedeutet, dass, wenn diecopy_files.cookie
Ziel ist gebaut, es wird aufgerufen, die extra compiler die Dateien kopieren.Wir geben Sie einen Befehl, der durch dieses Ziel, die
touch
die Dateiencopy_files.cookie
undcompiler_copy_files_make_all
. Durch die Berührung mit diesen Dateien stellen wir sicher, dassmake
wird nicht versuchen Sie, kopieren Sie die Dateien erneut, es sei denn, deren Zeitstempel Aktueller ist als der berührt-Dateien. Schließlich, fügen wircopy_files.cookie
der Liste der Abhängigkeiten dermake all
Ziel.Wie es zu benutzen
In Ihrem
.pro
- Datei, fügen Siecopy_files
zu denCONFIG
variable:Dann die Dateien hinzufügen, um die
COPY_FILES
variable:InformationsquelleAutor der Antwort Oktalist
Als Ergänzung zu Jakes Antwort und @Phlucious Kommentar kann man mit qmake
defineReplace
Funktion, die Suiten besser für diesen Anwendungsfall. Nach der Verwendung der mitgelieferten Beispiel habe ich ein problem festgestellt, wo qmake übersprungen, den letzten Beitrag link-Aktion, die ich Hinzugefügt. Das könnte ein Problem mit dem export der Variablen, wenn der Inhalt der sah ziemlich gut die ganze Zeit. Lange Rede, kurzer Sinn, hier ist der geänderte codeDiese Allgemeinen copy-Funktion verwendet werden kann, durch einige Komfort-Funktionen wie diese
Den zweiten nehmen Sie nur ein argument (eine oder mehrere Dateien) und stellt einen festen Pfad. So ziemlich das gleiche wie in den Referenzen beantworten.
Aber nun beachten die Anrufung Unterschied
Wie Sie sehen können, können Sie den zurückgegebenen Befehl QMAKE_PRE_LINK für noch mehr Flexibilität.
InformationsquelleAutor der Antwort maxik
Definieren Sie zunächst die folgenden zwei Funktionen für die Unterstützung von Windows/Unix.
Dann können Sie den folgenden code, um die funcitons, die definiert werden, bevor Sie zum kopieren von Dateien in bestimmte Ordner, und auch das erstellen des Verzeichnisses, wenn nötig. Dies ist getestet unter Win32, Linux-tests sind willkommen.
InformationsquelleAutor der Antwort lygstate