Rekursives make und -j: Warum eure Parallelität verloren geht
Recursive `make` and `-j`
Der Artikel untersucht rekursive make-Aufrufe, bei denen ein Makefile-Rezept selbst make startet. Ohne spezielle Syntax geht die -j-Parallelität verloren, weil der Jobserver nicht an das Kind weitergegeben wird. Der Autor vergleicht das Verhalten von GNU Make 3.81 bis 4.3 und zeigt, wie man mit + oder $(MAKE) die Warnung behebt – und welche Trade-offs bei konkurrierenden -j-Angaben bleiben.
Ich finde diese Lösung genauso unangenehm magisch wie das Präfix @ oder das Präfix -.
- stabbles
Das `-j` ist nur für den Top-Level-Aufruf gedacht, und das $(MAKE)-Muster ist Standard.
Die `+`- oder $(MAKE)-"Tricks", um sicherzustellen, dass der Jobserver an Submake und andere Subprozesse vererbt wird, sind in gmake 4.4 (von 2022) nicht mehr nötig, weil es standardmäßig eine FIFO statt Pipes verwendet. Der Autor sollte einfach gmake aktualisieren :).
- fragmede
Mach das nicht!
https://accu.org/journals/overload/14/71/miller_2004/
Recursive Make Considered Harmful
Von Peter Miller