Dla niektórych testów wewnętrznych, chciałbym, aby domyślny prefiks instalacji był podkatalogiem katalogu budowania, chyba że zostanie jawnie nadpisany przez użytkownika. Wiem, użytkownik może określić prefiks instalacji przez:Ustaw prefiks instalacji automatycznie na niestandardową ścieżkę, jeśli nie jest jawnie określony w wierszu polecenia
$ cmake -DCMAKE_INSTALL_PREFIX=/foo/bar ..
Ale jeśli użytkownik nie ma określenie to powinno domyślnie, na przykład ${PWD}/installed
.
Zmienna CMAKE_INSTALL_PREFIX
jest już ustawiona na /usr/local
, więc nie mogę po prostu sprawdzić, czy jest ona rozbrajana/pusta przed jej ustawieniem.
Moje obecne rozwiązanie jest dodanie przełącznika niestandardowy, który użytkownik musi powołać, aby określić, że zmienna CMAKE_INSTALL_PREFIX
dostaje przestrzegane:
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()
moje pytania są następujące:
(a) Czy są jakieś problemy z powyższym, poza irytacją dodatkowej flagi, która musi zostać przekazana do CMake, aby uzyskać efekt CMAKE_INSTALL_PREFIX
?
(b) Czy istnieje lepszy, czystszy, bardziej solidny, bardziej idiomatyczny i/lub mniej irytujący sposób, aby osiągnąć powyższe?
Dzięki.
Idealny! Dzięki! – Jeet
Chciałbym znaleźć ten post kilka dni temu, gdy wyciągałem włosy, próbując uzyskać wiele zależności ExternalProject, aby zrobić to, co trzeba. Dzięki! – KarateSnowMachine