Für einige interne Tests möchte ich das Installationspräfix standardmäßig auf ein Unterverzeichnis des Build-Verzeichnisses, sofern nicht explizit durch den Benutzer überschrieben. Ich weiß, dass der Benutzer einen Präfix installieren angeben können:Installationspräfix automatisch auf benutzerdefinierten Pfad festlegen, wenn nicht explizit in der Befehlszeile angegeben
$ cmake -DCMAKE_INSTALL_PREFIX=/foo/bar ..
Aber wenn der Benutzer tut nicht dies angeben, sollte es standardmäßig, z ${PWD}/installed
.
Die Variable CMAKE_INSTALL_PREFIX
ist bereits auf /usr/local
eingestellt, daher kann ich nicht einfach überprüfen, ob sie vor der Einstellung unscharf/leer ist.
Meine aktuelle Lösung ist ein benutzerdefinierten Schalter hinzufügen, dass der Benutzer angeben, berufen hat, dass die CMAKE_INSTALL_PREFIX
Variable respektiert werden:
option(ENABLE_INSTALL_PREFIX "Install build targets to system (path given by '-DCMAKE_INSTALL_PREFIX' or '${CMAKE_INSTALL_PREFIX}' if not specified)." OFF)
if (ENABLE_INSTALL_PREFIX)
set (CMAKE_INSTALL_PREFIX installed CACHE PATH "Installation root")
else()
set (CMAKE_INSTALL_PREFIX installed CACHE PATH "Installation root" FORCE)
endif()
Meine Fragen sind:
(a) Gibt es Probleme mit dem oben genannten, über den Ärger der zusätzlichen Flagge, die an CMake übergeben werden muss, um CMAKE_INSTALL_PREFIX
zu bekommen, um einen Effekt zu haben?
(b) Gibt es einen besseren, saubereren, robusteren, idiomatischen und/oder weniger störenden Weg, um das Obige zu erreichen?
Danke.
Perfekt! Vielen Dank! – Jeet
Ich wünschte, ich hätte diesen Post vor ein paar Tagen gefunden, während ich mir die Haare auszog und versuchte, mehrere ExternalProject-Abhängigkeiten zu bekommen, um das Richtige zu tun. Vielen Dank! – KarateSnowMachine