Hi, ist ja schon lustig, worüber diskutiert wird, wenn einer eine technische Frage zu make stellt. Zum Thema: Wenn einer ein make dist ausführt, kennt Er/Sie diese Vorgehensweise eigentlich, oder ? Wenn jemand gewaltsam eine make variable überschreibt - selber schuld. Ich teste schlieslich nicht den Misbrauch meiner makefiles. Oder sollte ich das ? CVS/Enties: Ich lösche alles, was der Compiler erstellt hat. (*.o, *.so.* und die excecutables selbst). Ich als Entwickler meiner Software weiß doch, was ich löschen muß. Da meine Software ein Framework zur Softwareentwicklung ist, halte ich ein make dist als Ansatz für die Distribution für sinnvoll. Der Benutzer meiner Distribution muss nur sein eigenes Werk einklinken und er hat am Ende eine saubere Distribution. Sehe ich da etwas völlig falsch ? Lothar ---- My home: www.lollisoft.de ----------------------------- Lothar Behrens | Independent: lothar.behrens@gmx.de Rosmarinstr 3 | My public project: 40235 Düsseldorf | http://sourceforge.net/projects/lbdmf | -> Need comments, please visit :-)
On Wed, 2004-10-13 at 20:56, Lothar Behrens wrote:
Hi,
ist ja schon lustig, worüber diskutiert wird, wenn einer eine technische Frage zu make stellt. <Seufz/>
Es gibt so viele Makefiles, deren Entwickler glaubten, cleverer zu sein, als Generationen von Entwicklern vor ihnen ... Anders ausgedrückt: Ich halte den Versuch manuell portable Makefiles schreiben zu wollen, für "im Ansatz verfehlt", für "zum Scheitern verurteilt" und für Selbstüberschätzung. * Wenn schon manuell, dann ganz richtig proprietär. Also wenn schon proprietär unter Linux, dann echtes gnumake. * Wenn portabel, dann unter Verwendung von Tools. Ich empfehle automake, in erster Linie deshalb, weil es ein weit verbreitetes Framework zur Erstellung von portablen Makefiles ist, die auf einer Vielzahl von Plattformen funktionieren.
Zum Thema:
Wenn einer ein make dist ausführt, kennt Er/Sie diese Vorgehensweise eigentlich, oder ?
Wenn jemand gewaltsam eine make variable überschreibt - selber schuld. Nein, das ist Bestandteil der Arbeitsweise von make (Ein Feature).
Es ist deine Aufgabe als Entwickler, dafür zu sorgen, dass ein Makefile das tut, was Du willst, dass es tut.
Ich teste schlieslich nicht den Misbrauch meiner makefiles. Oder sollte ich das ? Es liegt in deinem Ermessen festzulegen, was deine Makefiles tun sollen.
Willst Du einen "simplen Hack", der "für Dich tut", oder willst Du eine komplexe Infrastruktur, die in unterschiedlichsten Umgebungen von vielen Entwicklern und Benutzern genutzt wird?
Da meine Software ein Framework zur Softwareentwicklung ist, halte ich ein make dist als Ansatz für die Distribution für sinnvoll.
Der Benutzer meiner Distribution muss nur sein eigenes Werk einklinken und er hat am Ende eine saubere Distribution.
Sehe ich da etwas völlig falsch ? Ja. Grundsätzlich ist "dist" ein x-beliebiges make-Target. Was es genau tut, liegt im Ermessen des Entwicklers und wird von ihm festgelegt.
Für GNU-kompatible Pakete ist das Verhalten von "make dist" in den GNU-Standards beschrieben (Vgl. info standards). Automake-basierte Makefiles implementieren das Verhalten wie es in den GNU-Standards beschrieben wird. Nicht-GNU-Pakete kennen "make dist" üblicherweise nicht. Ralf
On Wed, 2004-10-13 at 20:56, Lothar Behrens wrote:
Hi,
ist ja schon lustig, worüber diskutiert wird, wenn einer eine technische Frage zu make stellt. <Seufz/>
Es gibt so viele Makefiles, deren Entwickler glaubten, cleverer zu sein, als Generationen von Entwicklern vor ihnen ...
Ack. Ich habe aber nicht vor mit meinen makefiles automake in den Schatten zu stellen :-) Mein Ziel ist nur, mit einem ähnlichen Ansatz mir das schreiben neuer makefiles zu ersparen. Ich hatte ein Tool gefunden, das dies für meinen Compiler (Watcom unter Windows) tut. Ich hatte überlegt, automake wenigstens mal anzusehen. Nur schien mir das für einen 'Anfänger' bei makefiles zu schwierig. Die Überlegung war ja auch, unter beiden Platformen das gleiche Make System zu haben. MKMK tut dies für mich und damit bin ich zufrieden. Ich habe bis jetzt leider auch nur Kontakt mit einem Entwickler aus Atlanta, der sich dazu Äussern konnte. Das reicht aber nicht um mein Make System zu wechseln (gut oder schlecht).
Anders ausgedrückt: Ich halte den Versuch manuell portable Makefiles schreiben zu wollen, für "im Ansatz verfehlt", für "zum Scheitern verurteilt" und für Selbstüberschätzung.
Meine sind nicht ganz automatisch, aber ich arbeite daran :-)
* Wenn schon manuell, dann ganz richtig proprietär. Also wenn schon proprietär unter Linux, dann echtes gnumake. * Wenn portabel, dann unter Verwendung von Tools. Ich empfehle automake, in erster Linie deshalb, weil es ein weit verbreitetes Framework zur Erstellung von portablen Makefiles ist, die auf einer Vielzahl von Plattformen funktionieren.
auch unter Windows (automake) ?
Zum Thema:
Wenn einer ein make dist ausführt, kennt Er/Sie diese Vorgehensweise eigentlich, oder ?
Wenn jemand gewaltsam eine make variable überschreibt - selber schuld. Nein, das ist Bestandteil der Arbeitsweise von make (Ein Feature).
Natürlich. Nur sollte der Nutzer auch wissen was dann passiert. Ich kann zwar eine Liste von Targets auf 'leer' überprüfen und geeignet reagieren. Mein Make System ist noch nicht 'Boilerplate'
Es ist deine Aufgabe als Entwickler, dafür zu sorgen, dass ein Makefile das tut, was Du willst, dass es tut.
Klar
Ich teste schlieslich nicht den Misbrauch meiner makefiles. Oder sollte ich das ? Es liegt in deinem Ermessen festzulegen, was deine Makefiles tun sollen.
Willst Du einen "simplen Hack", der "für Dich tut", oder willst Du eine komplexe Infrastruktur, die in unterschiedlichsten Umgebungen von vielen Entwicklern und Benutzern genutzt wird?
Nicht nur für mich alleine, nur das Testen ist mit ein paar weiteren Testern sicher einfacher.
Da meine Software ein Framework zur Softwareentwicklung ist, halte ich ein make dist als Ansatz für die Distribution für sinnvoll.
Der Benutzer meiner Distribution muss nur sein eigenes Werk einklinken und er hat am Ende eine saubere Distribution.
Sehe ich da etwas völlig falsch ? Ja. Grundsätzlich ist "dist" ein x-beliebiges make-Target. Was es genau tut, liegt im Ermessen des Entwicklers und wird von ihm festgelegt.
Für GNU-kompatible Pakete ist das Verhalten von "make dist" in den GNU-Standards beschrieben (Vgl. info standards). Automake-basierte Makefiles implementieren das Verhalten wie es in den GNU-Standards beschrieben wird.
Nicht-GNU-Pakete kennen "make dist" üblicherweise nicht.
Standart hin oder her, ich werde vielleicht später mal schauen, ob
ich mein Make System dem Standart anpassen muss und wie viel.
Ich habe mit meiner Variante jedenfalls folgende Möglichkeiten:
Ein Makesystem (aufruf mit make)
Windows (MSC/Watcom/
Ralf
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-programming-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-programming-help@suse.com
---- My home: www.lollisoft.de ----------------------------- Lothar Behrens | Independent: lothar.behrens@gmx.de Rosmarinstr 3 | My public project: 40235 Düsseldorf | http://sourceforge.net/projects/lbdmf | -> Need comments, please visit :-)
Am Donnerstag, 14. Oktober 2004 19:53 schrieb Lothar Behrens:
Ich hatte überlegt, automake wenigstens mal anzusehen. Nur schien mir das für einen 'Anfänger' bei makefiles zu schwierig. Die Überlegung war ja auch, unter beiden Platformen das gleiche Make System zu haben.
relativ Simpel und auf mehreren Plattformen zu haben: tmake von Trolltech (nicht mehr gewartet, aber auf der Seite zu bekommen) qmake von Trolltech (bei aktuellen qt-Versionen dabei) cmake ist AFAIK von Kitware und wird zum Bauen von VTK verwendet. Andreas
Am Donnerstag, 14. Oktober 2004 19:53 schrieb Lothar Behrens:
Ich hatte überlegt, automake wenigstens mal anzusehen. Nur schien mir das für einen 'Anfänger' bei makefiles zu schwierig. Die Überlegung war ja auch, unter beiden Platformen das gleiche Make System zu haben.
relativ Simpel und auf mehreren Plattformen zu haben:
tmake von Trolltech (nicht mehr gewartet, aber auf der Seite zu bekommen) qmake von Trolltech (bei aktuellen qt-Versionen dabei) cmake ist AFAIK von Kitware und wird zum Bauen von VTK verwendet.
Ich bleibe erst mal bei make (GNU make). Ich verwende Cygwin, was meines Wissens GNU make enthält. Das mkmk Tool ist im übrigen frei verfügbar. Ich habe es auf Linux portiert, um es auch hier verwenden zu können. Ich habe es in meinem Projekt unter vendor abgelegt. Da ich den Orginalautor nicht kontaktieren kann, habe ich mich entschieden, das Tool in meinem Projekt aufzunehmen. Lothar ---- My home: www.lollisoft.de ----------------------------- Lothar Behrens | Independent: lothar.behrens@gmx.de Rosmarinstr 3 | My public project: 40235 Düsseldorf | http://sourceforge.net/projects/lbdmf | -> Need comments, please visit :-)
Am Freitag, 15. Oktober 2004 20:20 schrieb Lothar Behrens:
ich hab das geschrieben:
relativ Simpel und auf mehreren Plattformen zu haben:
tmake von Trolltech (nicht mehr gewartet, aber auf der Seite zu bekommen) qmake von Trolltech (bei aktuellen qt-Versionen dabei) cmake ist AFAIK von Kitware und wird zum Bauen von VTK verwendet.
Ich bleibe erst mal bei make (GNU make). Ich verwende Cygwin, was meines Wissens GNU make enthält.
alle von mir benannten Tools verwenden anschließend ein installiertes Make-Tool (also (GNU) make oder nmake beim Visual C++ oder make bei Borland Compilern) diese Tools bauen nur die System-makefiles aus allgemeinen Beschreibungen zusammen. Also vergleichbar mit den auto-tools. Andreas
participants (3)
-
Andreas Loesch
-
Lothar Behrens
-
Ralf Corsepius