rubricanis
Homo ludens
I ch nehme mal das Thema vom vorangegangen thread auf:
Windows mit mingw-64 ist ist ein Härtetest für portable makefiles. Ich habe jetzt versucht drei mittelgroße Projekte bei denen ich an den libs interessiert bin damit zu kompilieren, und keines hat funktioniert, das obwohl angeblich beide angepaßt sind. Jetzt könnte ich mich natürlich daran machen mir die makefiles im Detail anzusehen und zu debuggen. Das erscheint mir auf Dauer aber wenig aussichtsreich denn wie es scheint hat jeder der Autoren andere Vorstellungen darüber wie ein Makefile aussehen sollte und wie Compiler und Umgebung konfiguriert sind womit man sich bei jedem weiteren Projekt befassen müßte.
Aussichtsreicher erscheint mir nur die *.c und *.h zu benutzen, in ein von mir selbst entwickeltes file layout [src/<projec>t, inc/<project>] einzufügen und dann ein eigenes Makefile dafür zu schreiben, - für was gibt es schließlich open source? Das ist zwar auch einiges an Arbeit aber besser an den eigenen Fehlern zu scheitern, die zu korrigieren und daran zu lernen als an denen anderer rumzufrickeln! Und schließlich hat man ja noch dir orig. makefiles zum studieren. Was man damit natürlich aufgibt ist die mehr oder minder automatische Aktualisierung durch git. Man muss die jeweiligen Projekte daher im Blick behalten und ggf. selbst aktualisieren. Das ist jetzt mein Plan, was denkt ihr dazu?
Was ich in der kurzen Zeit in der ich mich damit beschäftige gelernt habe ist, dass es sich lohnt einen wirklich tiefen Blick in die Dokumentation von gcc und (g)make zu werfen, da gibt es doch einiges das man vorteilhaft verwenden kann. Leider fehlt es dan an Beispielen und manches ist wirklich schwer verständlich wenn man noch am Anfang ist. Wir werden sehen und ich werde berichten...
Ach, ausnahmslos alle Build-Systeme sind warzig... Nach Jahren der Erfahrung würde ich, wenn nichts anderes durch die Sprache, die Umgebung oder das Projekt vorgegeben ist, immer GNU Make nehmen. Ja, GNU Make hat wie alle Make-Dialekte eine recht eklige Syntax und einige Dinge sind nur mit dem Kopf durch den Hintern möglich. Und auch wenn GNU Make eine der schnelleren Make-Implementierungen ist, ist es im Vergleich zu neueren Systemen wie Ninja einfach lahm. Aber: GNU Make gibt es auf praktisch allen Plattformen, die einen C-Compiler haben. Und ein sauber geschriebenes GNU Makefile funktioniert auf all diesen Plattformen einfach. Im Gegensatz zu all den hippen Lösungen, die oft schon auseinanderfallen, wenn der Entwickler Debian nutzt und man es auf CentOS bauen will. Außerdem ist GNU Make über die Jahre sehr stabil, ein Makefile von 1998 ist heute noch valide und wird es 2038 wahrscheinlich auch noch sein. Bei der Konkurrenz muss man oft schon nach 3 Jahren und 5 Unterversionen nachfrickeln, weil sich irgendwas am Syntax geändert hat oder es sich dann doch irgendwo subtil anders verhält.
Windows mit mingw-64 ist ist ein Härtetest für portable makefiles. Ich habe jetzt versucht drei mittelgroße Projekte bei denen ich an den libs interessiert bin damit zu kompilieren, und keines hat funktioniert, das obwohl angeblich beide angepaßt sind. Jetzt könnte ich mich natürlich daran machen mir die makefiles im Detail anzusehen und zu debuggen. Das erscheint mir auf Dauer aber wenig aussichtsreich denn wie es scheint hat jeder der Autoren andere Vorstellungen darüber wie ein Makefile aussehen sollte und wie Compiler und Umgebung konfiguriert sind womit man sich bei jedem weiteren Projekt befassen müßte.
Aussichtsreicher erscheint mir nur die *.c und *.h zu benutzen, in ein von mir selbst entwickeltes file layout [src/<projec>t, inc/<project>] einzufügen und dann ein eigenes Makefile dafür zu schreiben, - für was gibt es schließlich open source? Das ist zwar auch einiges an Arbeit aber besser an den eigenen Fehlern zu scheitern, die zu korrigieren und daran zu lernen als an denen anderer rumzufrickeln! Und schließlich hat man ja noch dir orig. makefiles zum studieren. Was man damit natürlich aufgibt ist die mehr oder minder automatische Aktualisierung durch git. Man muss die jeweiligen Projekte daher im Blick behalten und ggf. selbst aktualisieren. Das ist jetzt mein Plan, was denkt ihr dazu?
Was ich in der kurzen Zeit in der ich mich damit beschäftige gelernt habe ist, dass es sich lohnt einen wirklich tiefen Blick in die Dokumentation von gcc und (g)make zu werfen, da gibt es doch einiges das man vorteilhaft verwenden kann. Leider fehlt es dan an Beispielen und manches ist wirklich schwer verständlich wenn man noch am Anfang ist. Wir werden sehen und ich werde berichten...