Berasal dari dunia C dan C ++, sebagian besar sistem build memiliki installtarget, 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 releasetarget yang akan menghasilkan program yang dapat diinstal (misalnya .debatau .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 installtarget?
make installbiasanya 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 installtidak masuk akal ketika kita berbicara tentang kompilasi silang
DESTDIR.