Frage

Ich habe ein sehr großes C-Projekt mit vielen separaten C-Dateien und Header und viele Dutzenden von Mitwirkenden. Viele Teilnehmer haben keine starken Wissen über Makefiles und Abhängigkeiten, die sich in dem nicht selten Problem, wo man fast immer zu „reinigen“, bevor Sie vertrauen können „machen“, um die korrekte Ausgabe erzeugt haben.

Wenn make Minuten in Anspruch nimmt, wäre dies kein Problem sein, aber es ist fast 2 Stunden auf einer schnelle Maschine jetzt, und die Menschen beginnen in Code zu überprüfen, die funktionieren, wenn sie machen, aber sie nicht sauber erste und ihre Code bricht schließlich den Build. Fragen Sie nicht, warum diese von dem Build-Manager nicht gefangen werden, bevor eine neue Basislinie geschnitten ...

Ja, sollten wir es nicht so weit gehen lassen.

Ja, wir erziehen unsere Entwickler.

Wie üblich, haben wir keine Zeit, um alles zu stoppen und es von Hand zu beheben.

Ich denke, es gibt Werkzeuge in diese Richtung:

  • Gibt es automatisierte Tools zum richtigen Abhängigkeitsinformationen für ein vorhandenes Projekt aus den C- und H-Dateien erstellen?
  • Tools gibt automatisierte Abhängigkeitsinformationen gemäß den Makefiles zu beschreiben?
  • Gibt es eine heilige Gral eines Werkzeugs, die Unterschiede zwischen den beiden oben genannten Abhängigkeitsbäume zu beschreiben?

Aber was kann / sollte dieses Problem zu beheben tun?

Vielen Dank im Voraus ...

-Adam

War es hilfreich?

Lösung

Es könnte am einfachsten von Make zu einem Werkzeug zu wechseln, die Abhängigkeiten automatisch erkennt. Zum Beispiel SCons nicht machen Sie Abhängigkeiten auflisten, sondern analysiert automatisch die Dateien und sieht kompilierten für enthält . Sie geben einfach die Dateien kompiliert und ausführbare Dateien welche Dateien gehen, in die sein sollte. Schalt bauen Systeme wird einfacher für die Tatsache, dass Ihre Entwickler nicht wirklich Experten machen.

Eine weitere Alternative, wenn Sie mit Make-Stick ist die gcc -M Option zu verwenden, um automatisch Abhängigkeiten zu erkennen. Die Antwort auf die Entdeckung automatisch C Abhängigkeiten Frage hat ein Beispiel dafür, wie die Makefiles automatisch haben, entdecken Abhängigkeiten, so dass Sie nicht brauchen, sie mit der Hand zu geben.

Andere Tipps

Wir haben das gleiche Problem an meinem Arbeitsplatz. Der Stamm wurde immer nach verschmilzt gebrochen oder beim Check-In.

Wir legen kontinuierliche integation Maschine zu bauen, die ein make clean in etwa 45 Minuten tut im Vergleich zu etwa 2 Stunden auf einem dev machine.The Integration Server fragen alle die SVN-Repository 2 Stunden für neue Check-In und startet eine make sauber.

Auf diese Weise können wir genau überwachen, wenn die Build gebrochen war und es sofort beheben. Wir verwenden Hudson als unsere kontinuierliche Integration Server, seine freie und Open-Source, dessen Kunstwerk und sehr einfach einzurichten. Plus die Benutzeroberfläche ist sehr intuitiv, alle anderen Entwickler lieben es.

Cheers,

Der kanonische Weg, dies zu lösen, ist der Compiler automatisch generieren Abhängigkeits Informationen für Sie zu lassen. So etwas wie dieser (vorausgesetzt, gcc, Sie wollen Ihren Compiler für ähnliche Optionen überprüfen)

SOURCES=foo.c bar.c

%.d: %.c
    $(CC) $(CFLAGS) -MM $< >$@ 

include $(SOURCES:.c=.d)

Das GNU Handbuch Stellen hat ein Kapitel über automatisch zu erzeugen Voraussetzungen .

EDIT:. Ich in der Regel Leute empfehlen zu beginnen CMake , wenn sie diese Art von Problem

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top