Hasta que en algún momento del año pasado, usted puede hacer esto en su archivo MAKE: (GNU make probado)
MAKEFLAGS += "-j$(NUM_CORES) -l$(NUM_CORES)
(donde se calcula NUM_PPROCS
o conjunto de acuerdo con una de las muchas de las otras respuestas aquí) ¡Y, bam! usted tiene una construcción multiproceso en marcha.
Dado que esto ha dejado de funcionar, lo mejor que se me ocurre es esto, donde se llama el archivo MAKE, pero con -jX
y -lX
.
# add parallelism equal to number of cores every time.
# it seems that adding -jX to MAKEFLAGS directly doesn't work any more.
# included some "random" strings to ensure uniqueness
ifneq ($(PARALELL_WRAPPER_ABXCOEOEKCOEBMQJKHTOEUB),done)
NUM_CORES ?= $(shell grep -c "vendor_id" /proc/cpuinfo)
MAKEFLAGS +=" -j$(NUM_CORES) -l$(NUM_CORES) "
# for the default target case
parallel_wrapper_default_target_anthsqjkshbeohcbmeuthnoethoaeou:
$(MAKE) PARALELL_WRAPPER_ABXCOEOEKCOEBMQJKHTOEUB=done
# catches everything else
% :
$(MAKE) [email protected] PARALELL_WRAPPER_ABXCOEOEKCOEBMQJKHTOEUB=done
# the match for this else is at the end of the file
else
##### rest of makefile here #####
all: ...
...
other_target: ...
...
##### etc. #####
endif
Relacionado: http: // stackoverflow.com/questions/2527496/how-can-i-write-a-makefile-to-auto-detect-and-parallelize-the-build-with-gnu-make –
@sanmai, ¿para qué sistema operativo lo necesita? ¿Y por qué 'alias make = 'make -j $ (getconf _NPROCESSORS_ONLN)' 'no funciona para usted? –
Alias no será suficiente porque necesito publicar el Makefile y que siga funcionando. Necesito esto para GNU Make 4.1. @TarunLalwani – sanmai