web-dev-qa-db-fra.com

Marque parallèle: définissez -j8 comme option par défaut

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

37
Max Frai

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 .

37
Rafał Rawicki
setenv MAKEFLAGS '-j8'

J'espère que cela t'aides!

32
Matt Melton

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)
…
14
gtramontina