2010-01-28 76 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