jak zmodyfikować ścieżkę instalacji bez ponownego uruchamiania configure script / cmake

Pracuję nad projektem, który zajmuje sporo czasu (10-15) minut. Przekompilowałem, aby sprawdzić, czy jest błąd kompilacji. Teraz chcę zmienić katalog instalacyjny tak, że mam nową wersję wykonywalnego z nowymi zmianami. Czy istnieje metoda, aby po prostu zmodyfikować ścieżkę instalacji tak, że "make install" instaluje się w nowej lokalizacji, a nie w starej?

Author: A. K., 2012-11-20

5 answers

Wygenerowane przez CMake pliki Makefile wspierają konwencję kodowania DESTDIR dla plików Makefile. W ten sposób możesz nadpisać domyślną lokalizację instalacji, ustawiając zmienną DESTDIR po wywołaniu make:

$ make install DESTDIR=/opt/local
Nie ma potrzeby ponownego uruchamiania CMake.
 57
Author: sakra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-21 07:33:03

Nie wiem, czy to ogólnie prawda, ale mogę podać przykład wniosku, dla którego przyjęta odpowiedź przez sakra nie działa poprawnie. Jeśli zmodyfikujesz katalog instalacyjny modyfikując DESTDIR podczas instalacji ITK, doda on DESTDIR do już utworzonej ścieżki instalacji:

make install DESTDIR=/opt/local

[...]

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

Z drugiej strony, po ta odpowiedź przez Fraser spowoduje prawidłowe ścieżki instalacji bez rekompilacja:

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

[...]

-- Installing: /opt/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
 24
Author: kara deniz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:35

Uruchomienie CMake z -DCMAKE_INSTALL_PREFIX=<somewhere different to last time> nie powinno powodować potrzeby rekompilacji twojego projektu. Jeśli przekażesz do CMake inne parametry wiersza poleceń, które np. zmienią flagi kompilatora, to wymusi przebudowę obiektu docelowego, ale po prostu zmiana prefiksu install nie spowoduje.

 15
Author: Fraser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-21 01:27:06

Kanoniczna definicja DESTDIR i prefix to: pliki są instalowane do$DESTDIR $ prefix, Ale przygotowane tak, jakby ich ostateczna lokalizacja instalacji była tylko $ prefix.

Więc DESTDIR jest tylko dla osób budujących pakiety lub tarballe binariów; CMAKE_INSTALL_PREFIX jest przeznaczony dla każdego, kto chce określić, gdzie na końcu powinny znajdować się zbudowane binaria.

 10
Author: Dan Kegel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-15 21:38:25

Na wszelki wypadek, jeśli ktoś nie używa CMake, to istnieje metoda, aby to zrobić w Makefile. Jeśli masz Makefile.plik konfiguracyjny wygenerowany w katalogu budowania, znajdź prefix. To {[0] } jest install path gdzie pliki binarne / nagłówki itp. zostanie zainstalowany. Zmiana tego spowoduje zainstalowanie plików binarnych / nagłówków na zmodyfikowaną path.

 4
Author: A. K.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 21:19:20