Pochodzące ze świata C i C ++ większość systemów kompilacji ma installcel, 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ć releasecel, który wyśle program instalacyjny (na przykład .deblub .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 installcelu?
make installzwykle 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.