2010-01-28 77 views

回答

11

alias make="make -j 8",假设如果你使用命令行的Bash shell

+2

等..这如何不递归调用使 即 化妆 - > 使-j 8 - > 使-j 8 -j 8 - > 使-j 8 -j 8 -j 8 – anon 2010-01-28 01:08:41

+6

别名将make命令更改为默认的“make -j 8”它不调用make命令。 – Gazler 2010-01-28 01:11:13

+0

这也可以放在.bashrc文件中,因此您不必将其输入到每个shell中,.bashrc位于您的主目录(至少在Debian中)。 – Grundlefleck 2010-01-28 01:52:21

0

为什么不创建一个外部makefile,调用另一个makefile像这样,这是从手册复制here

 
    SUBDIRS = foo bar baz 
    .PHONY: subdirs $(SUBDIRS) 
    subdirs: $(SUBDIRS) 
    $(SUBDIRS): 
      $(MAKE) -j 8 -C [email protected] 

    foo: baz 
+0

通常当你想要这种类型的行为,它是每台机器,而不是项目。 – xaxxon 2016-08-18 23:46:35

10

建议alias make='make -j 8'的答案对您的问题是很好的回答。

但是,我会建议不要这样做!

通过一切手段,使用别名来保存输入 - 但它叫make以外的东西。

对于您目前正在进行的任何项目,这可能是可以的;但是很有可能编写具有缺失依赖关系的makefile,这些依赖关系与-j不能很好地协作,如果遇到这种情况,您会想知道为什么构建以一种神秘的方式对您失败,但对其他人可以正常工作。

(也就是说,如果你做别名make,你可以得到的bash忽略键入\make的别名)。

+0

为什么不建议使用像Eric所说的MAKEFLAGS环境变量? – xaxxon 2015-10-31 10:05:44

55

设置环境变量MAKEFLAGS到-j 8。如果你使用csh或tcsh,你可以用setenv MAKEFLAGS '-j 8'来做到这一点。如果你正在使用bash,你可以用export MAKEFLAGS='-j 8'来做到这一点。您可能希望将此命令放在shell的启动文件中,例如.cshrc或.bashrc(在您的主目录中)。

注意:设置默认这样将适用于化妆的所有调用,包括当你“做”比自己的其他项目或运行调用使脚本。如果项目设计不合理,则可能会在使用并行执行的多个作业构建时遇到问题。

+0

不能用于GNU Make 4.1 – sanmai 2018-02-01 09:11:13

-1

你可以移动到/usr/bin/make/usr/bin/make_orig使/usr/bin/make这个脚本:

#!/bin/sh 

/usr/bin/make_orig -j 8 [email protected] 

一定要运行chmod +x /usr/bin/make

如果my other answer中的简单方法不起作用,请尝试此方法。这种方法并不安全,而且有点混乱。

+0

这是非常糟糕的。想象一下,如果你需要更新你的make二进制文件。 – sanmai 2018-02-01 09:11:53

+0

@sanmai是的,MAKEOPTS好得多;比照[我上面的其他答案](https://stackoverflow.com/questions/2151605/make-make-default-to-make-j-8/42658101#42658101)。 – Geremia 2018-02-01 15:11:55

1

添加

MAKEOPTS='-j8' 
MAKEFLAGS='-j8' 

/etc/make.conf(如果它不存在创建它)。

如果还是不行,加

export MAKEOPTS='-j8' 
export MAKEFLAGS='-j8' 

到您的系统范围内的配置文件(例如,/ etc/profile文件)。

对我来说,MAKEOPTS本身并不奏效。可能MAKEFLAGS是所有需要的。

+0

只要你知道,也不能让这个工作。 https://gist.github.com/sanmai/dcc31ae20afa6e8ba4721f174fe05fd9 – sanmai 2018-02-02 00:23:57

+0

@sanmai为什么不呢?这个对我有用。 – Geremia 2018-02-02 03:28:40

+0

检查要点,看看你自己。 'MAKEFLAGS'只保存'-j',不含数字 – sanmai 2018-02-02 04:06:30