Je compile des paquets et je vois que souvent les auteurs de Makefile écrivent set CFLAGS dans le makefile, avec telle ou telle option. Je, d'un autre côté, voudrait essayer quelques optimisations de compilateur et voudrait propager les commutateurs de compilateur pour faire avec le moins de problème possible. Ce n'est pas toujours faisable. Par exemple quand un makefile spécifie CFLAGS et je veux que toutes les invocations du compilateur C utilisent -fomit-frame-pointer, sans avoir à écrire explicitement quelque chose comme CFLAGS=-fomit-frame-pointer make
, quelles sont mes options qui ne sont pas hackish. D'après ce que je peux voir il y a ce qui précède, alors il est le même mais différent make "CFLAGS=-fomit-frame-pointer"
et je peux aussi faire ce que je considère être la meilleure solution et la raison de cette question:Pourquoi les variables d'environnement ne remplacent-elles pas les variables définies dans les fichiers makefiles par défaut?
export CFLAGS=-fomit-frame-pointer
make -e
Je considère que ce le meilleur un, car franchement même pensé drapeau potentiellement dangereux, je ne débogage pas beaucoup de logiciels, et quand j'ai besoin de je peux recompiler un morceau particulier à la demande, avec des informations de débogage et tout. Sinon, j'aime travailler avec un logiciel de version sans avoir à déboguer les cloches et les sifflets, surtout si le paquet n'est pas écrit par moi. Donc je suppose que ce que je demande ici spécifiquement est: pourquoi make ne préfère pas automatiquement les variables d'environnement à makefile? Après tout l'environnement sait mieux quoi faire, et dans le cas où l'auteur a vraiment besoin de quelque chose, il y a la syntaxe 'override', n'est-ce pas?
Il ya un paramètre à faire: --environment-overrides qui fait ce que vous décrivez, je pense, donc vous pourriez être en mesure de faire cela par défaut "wrapping" make avec un script qui appelle real make avec --environment -overrides FWIW – rogerdpack