aż kiedyś w ciągu ostatniego roku, można to zrobić w swoim makefile: (GNU make testowane)
MAKEFLAGS += "-j$(NUM_CORES) -l$(NUM_CORES)
(gdzie NUM_PPROCS
oblicza lub zestaw według jednego z wielu innych odpowiedzi tutaj) A, bam! prowadzisz wieloprocesowy budynek.
Biorąc pod uwagę, że to przestało działać, najlepszą rzeczą jaką mogłem wymyślić jest to, gdzie plik Makefile się nazywa, ale z -jX
i -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
Powiązane: http: // stackoverflow.com/questions/2527496/how-can-i-write-a-makefile-auto-detect-and-parallelize-build-with-gnu-make –
@sanmai, do którego OS potrzebujesz? Dlaczego "alias make = 'make -j $ (getconf _NPROCESSORS_ONLN)" nie działa? –
Alias nie wystarczy, ponieważ muszę opublikować plik Makefile i nadal działać. Potrzebuję tego dla GNU Make 4.1. @TarunLalwani – sanmai