Dalam pengembangan (terutama C ++) saya, saya telah lama berpegang pada penggunaan build out-of-source. Artinya, sumber saya biasanya duduk di /project/src
direktori dan membangun hidup dalam /project/build/bin/release
, /project/build/bin/debug
direktori. Saya telah melakukan ini karena menjaga direktori sumber saya bersih dari file perantara, saya punya satu lokasi untuk semua binari saya, pengemasan lebih mudah, pembersihan lebih mudah, dan kontrol versi lebih mudah. (Apakah saya melewatkan sesuatu?)
Saya mewarisi proyek (besar) sekarang yang menggunakan build in-source. Apa motivasi untuk jenis struktur ini dan apa kelebihannya? (Saya paling peduli dengan alasan tingkat teknik vs. jenis alasan preferensi pribadi.)
Saya berharap Lakos '"Skala Besar C + + Desain Perangkat Lunak" akan membebani itu, tapi saya melewatkannya jika itu terjadi.
/project/src/bin/release
, atau benar-benar semua file antara dan keluaran/project/src
? Yang terakhir ini memang bisa berantakan jika ada lebih dari selusin file sumber, yang pertama ok.main.cpp
awalnya berada di tingkat atas proyek Anda, itu masih membuat direktori build cmake terpisah dari sumber Anda di tingkat atas itu. Saya percaya MSVS juga mirip dengan Clion dalam hal ini.Jawaban:
Setelah bertanya kepada komunitas di sini dan melanjutkan pencarian saya secara online, saya belum dapat menemukan justifikasi teknis yang signifikan untuk menggunakan in-source build. (Ada banyak contoh alasan untuk menghindarinya.)
Satu-satunya alasan obyektif yang saya temukan (seperti yang disinggung dalam komentar oleh @BartvanIngenSchenau) adalah bahwa in-source build kadang-kadang gagal oleh sistem build. Karena standar ini, mereka tidak memerlukan overhead dalam waktu setup, yang mungkin dapat diterima untuk proyek yang sangat kecil (atau awal).
sumber