¿Hay una manera que puedo hacer por defectoMarca "hacer" por defecto "hacer -j 8"
$ make
a:
$ make -j 8
?
¿Hay una manera que puedo hacer por defectoMarca "hacer" por defecto "hacer -j 8"
$ make
a:
$ make -j 8
?
alias make="make -j 8"
, en el supuesto de Bash
Si está utilizando la línea de comandos que puede hacer:
alias make='make -j 8'
Este será temporal, para hacerlo permanente que necesita para añadirlo a .bashrc
¿Por qué no crear un archivo MAKE externo, que llama a otro MAKEFLE como este? Esto se replica del manual here.
SUBDIRS = foo bar baz .PHONY: subdirs $(SUBDIRS) subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) -j 8 -C [email protected] foo: baz
por lo general, cuando desea este tipo de comportamiento, es por máquina, no por proyecto. – xaxxon
Las respuestas que sugieren alias make='make -j 8'
son buenas respuestas a su pregunta.
Sin embargo, ¡recomendaría no hacerlo!
De todos modos, use un alias para guardar la escritura, pero llámelo de otra manera que no sea make
.
Podría estar bien para cualquier proyecto en el que esté trabajando actualmente; pero es bastante posible escribir makefiles con dependencias faltantes que no funcionan del todo bien con -j
, y si se encuentra con algo así, se preguntará por qué la construcción falla de manera misteriosa para usted, pero funciona bien para otras personas.
(Dicho esto, si haces alias make
, puede obtener bash para ignorar el alias escribiendo \make
.)
¿Por qué no simplemente sugerir usar la variable de entorno MAKEFLAGS como dice Eric? – xaxxon
establecer el entorno MAKEFLAGS variables a -j 8
. Si está utilizando csh o tcsh, puede hacerlo con setenv MAKEFLAGS '-j 8'
. Si está utilizando bash, puede hacerlo con export MAKEFLAGS='-j 8'
. Es posible que desee poner este comando en el archivo de inicio de su shell, como .cshrc o .bashrc (en su directorio de inicio).
Precaución: Establecer un valor predeterminado como este se aplicará a todas las invocaciones de marca, incluso cuando "crea" un proyecto distinto al suyo o ejecuta un script que invoca make. Si el proyecto no estaba bien diseñado, podría tener problemas cuando se genera con múltiples trabajos que se ejecutan en paralelo.
No funcionará con GNU Make 4.1 – sanmai
Se podía mover /usr/bin/make
a /usr/bin/make_orig
y hacer /usr/bin/make
este script:
#!/bin/sh
/usr/bin/make_orig -j 8 [email protected]
Asegúrese de ejecutar chmod +x /usr/bin/make
.
Pruebe este método si el método más simple en my other answer no funciona. Este método no es tan seguro y es un poco complicado.
Añadir
MAKEOPTS='-j8'
MAKEFLAGS='-j8'
a /etc/make.conf
(crearlo si no existe).
Si eso no funciona, añadir
export MAKEOPTS='-j8'
export MAKEFLAGS='-j8'
a su perfil de todo el sistema (por ejemplo,/etc/profile).
Para mí, MAKEOPTS solo no funcionó. Posiblemente MAKEFLAGS es todo lo que se necesita.
esperar .. ¿cómo afecta esto no recursiva llamada que hace es decir marca -> hacer -j 8 -> hacer -j 8 -j 8 -> hacer -j 8 8 j -j 8 – anon
Los alias cambia el comando make a 'make -j 8' predeterminado. No llama al comando make. – Gazler
Esto también se puede colocar en el archivo .bashrc para que no tenga que ingresarlo en cada shell, .bashrc está en su directorio personal (al menos en Debian). – Grundlefleck