Max*_*rai 36 linux makefile build gnu-make parallel-builds
我可以使用-j参数为构建过程设置线程数.例如,我有4个核心+4虚拟.当我写:make -j8速度增加4倍.
是否可以将该值设置为默认值?(例如,在Linux Gentoo中,在配置文件中,可以设置此默认值).
ps我有Arch Linux
Raf*_*cki 38
您的问题不是关于线程,而是关于make执行的进程(作业).
设置此方法的简单方法是,从控制台使用make时添加:
alias make="/usr/bin/make -j 8"
Run Code Online (Sandbox Code Playgroud)
到你的.profile文件.
您也可以使用setenv MAKEFLAGS '-j 8',但MAKEFLAGS在某些情况下可以忽略此参数,因为保持所需数量的进程需要与递归make调用进行通信.令人高兴的是,此方法适用于当前版本的GNU Make.
Mat*_*ton 30
setenv MAKEFLAGS '-j8'
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
gtr*_*ina 13
这是我如何做到的:
CORES ?= $(shell sysctl -n hw.ncpu || echo 1)
all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…
Run Code Online (Sandbox Code Playgroud)
我基本上将我的默认目标"别名" all为"私有" _all.确定核心数量的命令是特定于OSX的AFAIK,因此如果愿意的话,您可以将其改进为更多跨平台.并且由于?=赋值,我们可以在需要时使用和env变量覆盖它.
编辑:
您也可以MAKEFLAGS从makefile本身附加到您的内容,如下所示:
CPUS ?= $(shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22113 次 |
| 最近记录: |