W moim rozwoju (głównie C ++) od dawna stosuję kompilacje spoza źródeł. Oznacza to, że moje źródło zazwyczaj siedzi w /project/src
katalogu i buduje żyć w /project/build/bin/release
, /project/build/bin/debug
katalogi. Zrobiłem to, ponieważ utrzymuje moje katalogi źródłowe w czystości od plików pośrednich, mam jedną lokalizację dla wszystkich moich plików binarnych, pakowanie jest łatwiejsze, czyszczenie jest łatwiejsze, a kontrola wersji jest łatwiejsza. (Czy coś przegapiłem?)
Dziedziczę (duży) projekt, który korzysta z kompilacji in-source. Jaka jest motywacja do tego typu konstrukcji i jakie są jej zalety? (Najbardziej interesują mnie przyczyny techniczne i przyczyny preferencji osobistych).
Miałem nadzieję, że „Wielkoskalowe projektowanie oprogramowania C ++” Lakosa będzie w to ważyć, ale spóźniłem się, gdyby tak się stało.
/project/src/bin/release
, czy naprawdę wszystkie pliki pośrednie i wyjściowe/project/src
? Ten ostatni może być naprawdę bałaganem, jeśli istnieje więcej niż tuzin plików źródłowych, pierwszy jest w porządku.main.cpp
początkowo znajdujący się na najwyższym poziomie projektu, nadal tworzy osobny katalog budowania cmake z dala od źródła na tym najwyższym poziomie. Uważam, że pod tym względem MSVS jest podobny do Cliona.Odpowiedzi:
Po zapytaniu tutaj społeczności i kontynuowaniu wyszukiwania online nie znalazłem istotnego technicznego uzasadnienia dla używania kompilacji in-source. (Istnieje wiele przykładów powodów, dla których należy ich unikać).
Jedynym obiektywnym powodem, który znalazłem (jak wspomniano w komentarzu @BartvanIngenSchenau), jest to, że kompilacje źródłowe są czasami domyślnie instalowane przez system kompilacji. Z powodu tego ustawienia domyślnego nie wymagają one narzutu w czasie instalacji, co może być całkowicie akceptowalne w przypadku bardzo małego (lub zadrapania) projektu.
źródło