Je peux définir le nombre de threads pour le processus de génération en utilisant -j
argument. Par exemple, j'ai 4 cœurs +4 virtuels. Quand j'écris: make -j8
la vitesse augmente 4 fois.
Est-il possible de définir cette valeur par défaut? (Par exemple, sous Linux Gentoo, dans le fichier de configuration, il est possible de définir cette valeur par défaut).
p.s. J'ai Arch Linux
Votre question ne concerne pas les threads, mais les processus (jobs) exécutés par make.
Le moyen simple de définir cela, lorsque make est utilisé à partir de la console, est d'ajouter:
alias make="/usr/bin/make -j 8"
à ton .profile
fichier.
Vous pouvez aussi utiliser setenv MAKEFLAGS '-j 8'
, mais MAKEFLAGS
peut ignorer ce paramètre dans certains scénarios, car pour conserver le nombre souhaité de processus, il faut communiquer avec des appels récursifs make
. Heureusement, cette méthode fonctionne avec les versions actuelles de GNU Make .
setenv MAKEFLAGS '-j8'
J'espère que cela t'aides!
Voici comment je l'ai fait:
CORES ?= $(Shell sysctl -n hw.ncpu || echo 1)
all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…
J'ai essentiellement "aliasé" ma cible par défaut all
en une "privée" _all
. La commande pour déterminer le nombre de cœurs est spécifique à OSX, AFAIK, vous pouvez donc simplement l'améliorer pour être plus multiplateforme si vous le souhaitez. Et à cause du ?=
affectation, nous pouvons simplement la remplacer par la variable et env si/quand cela est nécessaire.
MODIFIER:
Vous pouvez également ajouter à votre MAKEFLAGS
à partir du makefile lui-même, comme ceci:
CPUS ?= $(Shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…