In meiner (hauptsächlich C ++) Entwicklung habe ich mich lange an die Verwendung von Out-of-Source-Builds gehalten. Das heißt, meine Quelle sitzt in der Regel in einem /project/src
Verzeichnis und die Builds leben in einer /project/build/bin/release
, /project/build/bin/debug
Verzeichnisse. Ich habe dies getan, weil dadurch meine Quellverzeichnisse von Zwischendateien befreit werden, ich einen Speicherort für alle meine Binärdateien habe, das Packen einfacher, das Reinigen einfacher und die Versionskontrolle einfacher ist. (Habe ich etwas vergessen?)
Ich erbe jetzt ein (großes) Projekt, das In-Source-Builds verwendet. Was ist die Motivation für diese Art von Struktur und was sind ihre Vorteile? (Ich beschäftige mich am meisten mit Gründen auf technischer Ebene im Vergleich zu Gründen mit persönlichen Präferenzen.)
Ich hatte gehofft, Lakos '"Large-Scale C ++ Software Design" hätte sich darauf ausgewirkt, aber ich habe es verpasst, wenn es so wäre.
/project/src/bin/release
oder wirklich alle Zwischen- und Ausgabedateien in/project/src
? Letzteres kann in der Tat ein Chaos sein, wenn es mehr als ein Dutzend Quelldateien gibt, Ersteres ist in Ordnung.main.cpp
Wenn Sie sich zunächst in der obersten Ebene Ihres Projekts befinden, wird auf dieser obersten Ebene immer noch ein separates cmake-Erstellungsverzeichnis außerhalb Ihrer Quelle erstellt. Ich glaube, dass MSVS auch in dieser Hinsicht Clion ähnlich ist.Antworten:
Nachdem ich die Community hier gefragt und meine Online-Suche fortgesetzt habe, konnte ich keine wesentlichen technischen Gründe für die Verwendung von In-Source-Builds finden. (Es gibt viele Beispiele für Gründe, sie zu vermeiden.)
Der einzige objektive Grund, den ich gefunden habe (wie im Kommentar von @BartvanIngenSchenau erwähnt), ist, dass In-Source-Builds manchmal von einem Build-System standardmäßig verwendet werden. Aufgrund dieser Standardeinstellung benötigen sie keinen Overhead in der Einrichtungszeit, was für ein sehr kleines (oder Scratch-) Projekt durchaus akzeptabel sein kann.
quelle