2012-11-20 5 views
28

Ich arbeite an einem Projekt, das viel Zeit benötigt, um (10-15) Minuten aufzubauen. Ich habe neu kompiliert, um zu überprüfen, ob ein Kompilierungsfehler vorliegt. Jetzt möchte ich das Installationsverzeichnis ändern, so dass ich eine neue Version der ausführbaren Datei mit den neuen Änderungen habe. Gibt es eine Methode, um nur den Installationspfad zu ändern, so dass die 'make install' Installation an einem neuen Ort anstelle des alten installiert wird?wie man den Installationspfad ändert, ohne das configure script/cmake erneut auszuführen

+0

mögliche Duplikate von [Make install - aber nicht zu Standardverzeichnissen?] (Http://StackOverflow.com/questions/3239343/make-install-but-not-to-default-directories) –

Antwort

45

CMake erzeugte Makefiles unterstützen die DESTDIR coding convention für Makefiles. So können Sie den Standardinstallationspfad außer Kraft setzen, indem Sie die DESTDIR Variable bei Aufruf make Einstellung:

$ make install DESTDIR=/opt/local 

Es besteht keine Notwendigkeit neu zu laufen CMake.

9

Das Ausführen von CMake mit -DCMAKE_INSTALL_PREFIX=<somewhere different to last time> sollte nicht dazu führen, dass Ihr Projekt neu kompiliert werden muss. Wenn Sie andere Befehlszeilenparameter an CMake übergeben, die z. Ändern Sie die Compiler-Flags, dass würde eine Neuerstellung der betroffenen Ziele erzwingen, aber einfach das Installationspräfix nicht ändern.

+0

Gibt es einen Weg zu Ändern Sie das Installationspräfix, ohne cmake erneut auszuführen? Es scheint, dass CPACK in der Lage ist, dies zu tun, aber ich sehe keinen Weg für mich, es direkt zu tun, nur mit make + some Variable. Wenn ich ein Paket mit meinem eigenen Paketverwalter erstellen möchte, möchte ich Dinge unter/usr anstatt/usr/local abrufen, aber ich möchte, dass dies funktioniert, ohne den Programmierer zu fragen, CMake mit dem korrekten CMAKE_INSTALL_PREFIX auszuführen. –

+0

Nun, Sie könnten 'set' in Ihren CMakeLists verwenden.txt, um den Wert von 'CMAKE_INSTALL_PREFIX' hart zu codieren, aber ich denke, das ist ziemlich ungewöhnlich und könnte Leute erwischen, die bereits an CMake gewöhnt sind. Vielleicht wäre es eine bessere Option, eine "Nachricht" in Ihrer CMakeLists.txt auszudrucken, die den aktuellen Wert von 'CMAKE_INSTALL_PREFIX' anzeigt und auch Anweisungen gibt, wie Sie den Wert ändern können. Etwas wie 'message (" Der Installationspfad ist zur Zeit $ {CMAKE_INSTALL_PREFIX} ")' 'message (" Um diesen Lauf zu ändern: cmake. -DMAKE_INSTALL_PREFIX = \ " \" ")" – Fraser

4

Nur für den Fall, dass jemand CMake nicht verwendet, gibt es eine Methode, dies in Makefile zu tun. Suchen Sie prefix, wenn Sie in Ihrem Erstellungsverzeichnis die Makefile.config-Datei generiert haben. Diese prefix ist die Installation path wo Binärdateien/Header usw. installiert werden. Wenn Sie dies ändern, werden die Binaries/Header auf die geänderten path installiert.

16

Ich weiß nicht, ob das im Allgemeinen richtig ist, aber ich kann ein Beispiel für eine Anwendung geben, für die the accepted answer von sakra nicht ordnungsgemäß funktioniert. Wenn Sie das Verzeichnis installieren ändern DESTDIR durch Modifizieren wenn ITK Installation, wird es nur DESTDIR seiner anhängen bereits Pfad gebildet installieren:

make install DESTDIR=/opt/local 

[...]

-- Installing: /opt/local/usr/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]

Auf der anderen Seite folgende this answer von Fraser, wird in der richtigen Installationspfade ohne erneute Kompilierung führen:

cmake -DCMAKE_INSTALL_PREFIX=/opt/local /path/to/ITK_source 
make install 

[...]

-- Installing: /opt/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]

7

Die kanonische Definition von DESTDIR und Präfix ist: die Dateien installiert sind auf $ DESTDIR $ prefix, aber bereit, als ob ihre endgültigen Installationsort nur Präfix $ war.

Also ist DESTDIR nur für Leute, die Pakete oder Tarballs von Binaries bauen; CMAKE_INSTALL_PREFIX ist für jeden, der angeben möchte, wo die gebauten Binärdateien am Ende leben sollen.

Verwandte Themen