Berasal dari dunia C dan C ++, sebagian besar sistem build memiliki install
target, terutama Makefiles (di mana direkomendasikan oleh GNU misalnya) atau CMake . Target ini menyalin file runtime (executable, libraries, ...) di sistem operasi (misalnya, di C:\Program Files\
Windows).
Ini terasa benar-benar berantakan, karena bagi saya itu bukan tanggung jawab sistem build untuk menginstal program (yang sebenarnya adalah tanggung jawab manajer sistem operasi / paket). Ini juga berarti membangun sistem atau membangun skrip harus mengetahui organisasi program yang diinstal, dengan variabel lingkungan, variabel registri, symlink, izin, dll.
Paling-paling, sistem build harus memiliki release
target yang akan menghasilkan program yang dapat diinstal (misalnya .deb
atau .msi
), dan kemudian dengan hormat meminta sistem operasi untuk menginstal program itu. Itu juga akan memungkinkan pengguna untuk menghapus instalasi tanpa harus mengetik make uninstall
.
Jadi, pertanyaan saya: mengapa membangun sistem biasanya merekomendasikan memiliki install
target?
make install
biasanya menginstal di bawah /usr/local
(atau bahkan /opt
) yang direktori tidak ditangani oleh "sistem manajemen inti OS / paket". Tidak tahu apakah Windows memiliki konvensi serupa.
make install
tidak masuk akal ketika kita berbicara tentang kompilasi silang
DESTDIR
.