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
Antwort
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.
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.
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. –
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 = \ "
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.
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[...]
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.
- 1. Wie ändert man das Anwendungssymbol?
- 2. Wie verschiebt man Element mit Script-Element, ohne Script mit jQuery erneut auszuführen?
- 3. Wie man den Anwendungskontext ändert
- 4. wie man das Fragment ändert, ohne TimerTask zu stoppen. Android
- 5. Wie ändert man den Schemanamen?
- 6. So finden Sie den Installationspfad von IronPython
- 7. Wie man den Knopfcursor zur Hand ändert?
- 8. Wie ändert man den Standardkontext von jQuery?
- 9. Wie erstellt man ein Bild, das den Status ändert?
- 10. Wie ändert man den Rand oder das Auffüllen von Menüelementen?
- 11. Wie ändert man das Symbol für den Dezimalpunkt in double.ToString()?
- 12. Highstocks - Wie man den Standard Zoom ändert
- 13. Regenerieren .Plo-Dateien ohne laufende ./configure
- 14. Wie UglifyJS2 ohne Node.JS auszuführen
- 15. Wie ändert man das CSS des Hintergrundelements?
- 16. Wie ändert man das Standardhintergrundbild von jdesktopane?
- 17. Wie ändert man das Aussehen von ListView?
- 18. Tortoise SVN - Wie ändert man das Kontextmenü?
- 19. Wie ändert man den Inhaltstyp in PHP?
- 20. Wie ändert man den ActiveXObject JS Konstruktor?
- 21. Wie ändert man das Verhalten von Stubs?
- 22. Wie ändert man das Methodenverhalten durch Reflektion?
- 23. Wie ändert man den Platzhalter in select2?
- 24. Wie man den Header einer HttpUrlConnection ändert
- 25. Taschenlampe - Wie ändert man den Tensortyp?
- 26. Wie ändert man den ContentDialog-Übergang?
- 27. Wie ändert man den Hauptzweig in BitBucket?
- 28. Wie man das Thema eines Programms ändert
- 29. Wie ändert man das Openlayer Markersymbol?
- 30. Wie ändert man das Firefox-Symbol?
mögliche Duplikate von [Make install - aber nicht zu Standardverzeichnissen?] (Http://StackOverflow.com/questions/3239343/make-install-but-not-to-default-directories) –