Estoy compilando paquetes y veo que a menudo los autores de Makefile escriben set CFLAGS en el archivo MAKE, con tal y tales opciones. Yo, por otro lado, me gustaría probar algunas optimizaciones del compilador y me gustaría propagar los modificadores del compilador para hacerlos con la menor cantidad de problemas posible. No siempre es esto factible sin embargo. Por ejemplo, cuando un archivo MAKE especifica CFLAGS y quiero que todas las invocaciones del compilador C utilicen -fomit-frame-pointer, salvo tener que escribir explícitamente algo como CFLAGS=-fomit-frame-pointer make
, ¿cuáles son mis opciones que no son hackish? Por lo que puedo ver que hay de lo anterior, entonces no es el mismo pero diferente make "CFLAGS=-fomit-frame-pointer"
y también puede hacer lo que considero que es la mejor solución y la razón de esta pregunta: ¿¿Por qué las variables de entorno no anulan las variables establecidas en los archivos make de forma predeterminada?
export CFLAGS=-fomit-frame-pointer
make -e
considero este el mejor uno, porque francamente pensé que era una bandera potencialmente peligrosa, no depuro tanto el software, y cuando necesito puedo recompilar una pieza en particular a pedido, con información de depuración y todo. De lo contrario, me gusta trabajar con el software de lanzamiento sin depurar para nada las campanas y silbatos, especialmente si el paquete no es mi autor. Así que supongo que lo que pregunto aquí específicamente es: ¿por qué make no prefiere automáticamente las variables de entorno a las de makefile? Después de que todo el entorno sabe mejor qué es qué, y en caso de que el autor realmente necesite tener algo a su manera, existe la sintaxis de "anulación", ¿no?
Hay un parámetro que hacer: --environment-overrides que hace lo que describes, creo, por lo que puedes hacer que este sea el predeterminado al "envolver" make con un script que llame a make real con --environment -overrides FWIW – rogerdpack