Marca paralela: establecer-j8 como opción predeterminada
Puedo establecer el número de subprocesos para el proceso de compilación usando el argumento -j
. Por ejemplo, tengo 4 núcleos + 4 virtuales. Cuando escribo: make -j8
la velocidad aumenta 4 veces.
¿Es posible establecer ese valor como predeterminado? (Por ejemplo, en Linux Gentoo, en config file, es posible establecer este valor por defecto).
P. S. Tengo Arch Linux
3 answers
Su pregunta no se trata de subprocesos, sino de procesos (trabajos) ejecutados por make.
La manera simple de establecer esto, cuando se usa make desde la consola es agregar:
alias make="/usr/bin/make -j 8"
A su archivo .profile
.
También puede usar setenv MAKEFLAGS '-j 8'
, pero MAKEFLAGS
puede ignorar este parámetro en algunos escenarios, porque mantener el número deseado de procesos requiere comunicarse con llamadas recursivas make
. Afortunadamente este método funciona con las versiones actuales de GNU Make.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-12 22:54:22
setenv MAKEFLAGS '-j8'
Espero que esto ayude!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-18 12:11:33
Así es como lo he hecho:
CORES ?= $(shell sysctl -n hw.ncpu || echo 1)
all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…
Básicamente he "aliased" mi destino predeterminado all
a un "privado" _all
. El comando para averiguar el número de núcleos es específico de OSX, AFAIK, por lo que podría mejorarlo para ser más multiplataforma si lo desea. Y debido a la asignación ?=
, podemos simplemente sobrescribirla con y env variable si/cuando sea necesario.
EDITAR:
También puedes añadir a tu MAKEFLAGS
desde dentro del makefile mismo, así:
CPUS ?= $(shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-09 03:01:31