2015-06-06 4 views
6

Ich habe ein QT-Projekt, das einen Dienst auf dem System installiert, wenn make install ausgeführt wird. Die relevanten Teile der .pro Datei sind die folgenden:Wie man benutzerdefinierte Befehle während `make uninstall` von qmake in QT5 ausführt?

init.path = /etc/init.d/ 
init.files = myservicename 

updaterc.path = /etc/init.d/ 
updaterc.extra = chmod 755 $$init.files; \ 
       update-rc.d $$init.files defaults 97 03; \ 
       service $$init.files start 

INSTALLS += target ... init updaterc 

Dies installiert der Dienst ordnungsgemäß und startet ihn dann. Wenn ich jedoch make uninstall ausführen, obwohl die installierten Dateien korrekt gelöscht werden, bleibt der Dienst installiert und ausgeführt wird. Ich möchte, dass der Dienst gestoppt und deinstalliert wird, wenn make uninstall ausgeführt wird.

Die Befehle zum Anhalten und Deinstallation des Service sind die folgenden: wie

sudo service myservicename stop 
sudo update-rc.d -f myservicename remove 

Aber ich kann nicht herausfinden, die oben genannten Befehle in .pro-Datei zu integrieren, so dass qmake sie verstehen kann und erstellen die entsprechenden Regeln in das Makefile.

Die einzige Dokumentation, die ich zu diesem Thema gefunden habe, ist: http://doc.qt.io/qt-5/qmake-advanced-usage.html, aber es sagt nichts über die Deinstallation.

Antwort

7

versuchen, den Befehl .uninstall zu verwenden.

mytarget2.path = ~/Documents/inst 
mytarget2.target = test.txt 
mytarget2.commands = @echo "custom command" 
mytarget2.uninstall = @echo "uninstall" 
INSTALLS += mytarget2 

es diese Make-Datei generieren:

####### Install 

install_mytarget2: first FORCE 
    @test -d $(INSTALL_ROOT)/Users/mac/Documents/inst || mkdir -p $(INSTALL_ROOT)/Users/mac/Documents/inst 
    @echo custom command 

uninstall_mytarget2: FORCE 
    @echo uninstall 
    -$(DEL_DIR) $(INSTALL_ROOT)/Users/mac/Documents/inst/ 


install: install_mytarget2 FORCE 

uninstall: uninstall_mytarget2 FORCE 

FORCE: 
+0

Ja der 'uninstall' Befehl ist hilfreich, und scheint das Problem zu lösen, werde ich bis zum Ende der Prämie für den Fall, jemand warte sonst hat eine bessere Idee, sonst gehört die Prämie dir. Vielen Dank für Ihre Hilfe. – user000001

Verwandte Themen