Pochodzące ze świata C i C ++ większość systemów kompilacji ma install
cel, w szczególności Makefile (tam, gdzie jest to zalecane na przykład przez GNU ) lub CMake . Ten cel kopiuje pliki środowiska wykonawczego (pliki wykonywalne, biblioteki, ...) w systemie operacyjnym (na przykład w C:\Program Files\
systemie Windows).
Jest to naprawdę hackerskie, ponieważ dla mnie nie jest obowiązkiem kompilacji systemu instalowanie programów (co w rzeczywistości jest odpowiedzialnością systemu operacyjnego / menedżera pakietów). Oznacza to również, że system kompilacji lub skrypt kompilacji musi znać organizację zainstalowanych programów, ze zmiennymi środowiskowymi, zmiennymi rejestru, dowiązaniami symbolicznymi, uprawnieniami itp.
W najlepszym wypadku systemy kompilacji powinny mieć release
cel, który wyśle program instalacyjny (na przykład .deb
lub .msi
), a następnie uprzejmie poprosi system operacyjny o zainstalowanie tego programu. Umożliwiłoby to również użytkownikowi odinstalowanie bez konieczności pisania make uninstall
.
Więc moje pytanie: dlaczego system kompilacji zwykle zaleca posiadanie install
celu?
make install
zwykle instaluje się w /usr/local
(a nawet /opt
) katalogach nieobsługiwanych przez „podstawowy system zarządzania pakietami / systemami operacyjnymi”. Nie mam pojęcia, czy system Windows ma podobną konwencję.
make install
że nie ma to sensu, gdy mówimy o kompilacji krzyżowej
DESTDIR
.