인수를 사용하여 빌드 프로세스의 스레드 수를 설정할 수 있습니다. 예를 들어, 4 코어 +4 가상 있습니다. 쓰기 : make -j8
속도가 4 배 증가합니다.Parallel make : 기본 옵션으로 -j8을 설정하십시오.
해당 값을 기본값으로 설정할 수 있습니까? 예를 들어, Linux Gentoo의 설정 파일에서이 기본값을 설정할 수 있습니다.
p.s. 나는 아치 리눅스에게이 도움이
인수를 사용하여 빌드 프로세스의 스레드 수를 설정할 수 있습니다. 예를 들어, 4 코어 +4 가상 있습니다. 쓰기 : make -j8
속도가 4 배 증가합니다.Parallel make : 기본 옵션으로 -j8을 설정하십시오.
해당 값을 기본값으로 설정할 수 있습니까? 예를 들어, Linux Gentoo의 설정 파일에서이 기본값을 설정할 수 있습니다.
p.s. 나는 아치 리눅스에게이 도움이
귀하의 질문은 스레드에 관한 것이 아니라 make에 의해 실행되는 프로세스 (작업)에 관한 것입니다. 메이크업은 콘솔에서 사용되는
이를 설정하는 간단한, 방법은 추가된다
alias make="/usr/bin/make -j 8"
당신의 .profile
파일에.
는 또한 setenv MAKEFLAGS '-j 8'
를 사용할 수 있지만 프로세스의 원하는 번호를 유지하는 것은 재귀 make
전화와 통신이 필요하기 때문에 MAKEFLAGS
, 일부 시나리오에서이 매개 변수를 무시할 수 있습니다. 행복하게이 방법 works with current versions of GNU Make. 여기
"재귀 적 make"에 대한 언급은 멈추지 않고, 다시 한번 http://aegis.sourceforge.net/auug97.pdf를 가리키고 싶습니다. 게다가, make 파일은 심지어 허용하도록 잘 작성되어야합니다. 병렬 제조용. 종종 자동화 된 방법은 실제 종속성을 무시하고 대상이 여러 번 작성되도록합니다. – 0xC0000022L
향후 링크가 작동하지 않을 경우 "재귀 적으로 유해한 것으로 간주됩니다"라는 제목이 붙어 있으며 충분히 쉽게 작성되어야합니다 찾다. 그것은 읽을만한 가치가 있습니다. – SystemParadox
'setenv'는 무엇입니까? csh 내장? – alecov
에서는 setenv MAKEFLAGS '-j8'
희망이있다!
내가 그것을 한 적이 방법 : 나는 기본적으로 _all
"개인"내 기본 대상 all
을 "별칭"한
CORES ?= $(shell sysctl -n hw.ncpu || echo 1)
all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…
. 코어 수를 계산하는 명령은 AFAIK에 특화된 OSX이기 때문에 가능한 경우 더 많은 크로스 플랫폼이되도록 향상시킬 수 있습니다. ?=
할당 때문에 필요한 경우 변수를 env 변수로 재정의 할 수 있습니다.
편집 :
또한과 같이, 메이크 자체 내에서 MAKEFLAGS
에 추가 할 수 있습니다
CPUS ?= $(shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…
이것은 다른 솔루션보다 훨씬 뛰어나다. Makefile별로 이것을 수정할 수 있기 때문이다. –
MAKEFLAGS는이 방법으로 변경할 수 없습니다. 사용해보기 : https://gist.github.com/sanmai/dcc31ae20afa6e8ba4721f174fe05fd9 – sanmai
이것은 GCC보다 메이크업 질문에 가깝습니다. – Pubby
그래서 기본 C++ make 옵션은 '가능한 것보다 4 배 느리게 실행'됩니까? 이상한 결정! –
@MartinJames Parallel make에는 많은 결함이 있으므로 잘못된 기본값이됩니다. – Pubby