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

Author: Vadim Kotov, 2012-05-13

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.

 33
Author: Rafał Rawicki,
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!

 26
Author: Matt Melton,
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)
…
 7
Author: gtramontina,
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