Có cách nào mà tôi có thể làm choMake "làm cho" mặc định để "làm -j 8"
$ make
mặc định:
$ make -j 8
?
Có cách nào mà tôi có thể làm choMake "làm cho" mặc định để "làm -j 8"
$ make
mặc định:
$ make -j 8
?
alias make="make -j 8"
, giả sử bash shell
Nếu bạn đang sử dụng dòng lệnh bạn có thể làm:
alias make='make -j 8'
này sẽ chỉ là tạm thời, để làm cho nó vĩnh viễn bạn cần phải thêm nó vào .bashrc
Đọc tại đây: http://www.linfo.org/make_alias_permanent.html
Tại sao không tạo ra một makefile bên ngoài, gọi một makefile khác như thế này, điều này được nhân rộng từ hướng dẫn here.
SUBDIRS = foo bar baz .PHONY: subdirs $(SUBDIRS) subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) -j 8 -C [email protected] foo: baz
thường là khi bạn muốn loại hành vi này trên mỗi máy, không phải dự án. – xaxxon
Câu trả lời gợi ý alias make='make -j 8'
là câu trả lời đúng cho câu hỏi của bạn.
Tuy nhiên, tôi khuyên bạn không nên làm điều đó!
Bằng mọi cách, hãy sử dụng bí danh để lưu gõ - nhưng gọi nó là cái gì đó khác hơn make
.
Nó có thể là OK cho bất kỳ dự án bạn đang làm việc trên; nhưng có thể viết các makefiles với các phụ thuộc bị thiếu mà không hoạt động đúng với -j
, và nếu bạn gặp phải một điều như vậy, bạn sẽ bị bỏ lại tự hỏi tại sao việc xây dựng lại không thành công theo cách bí ẩn cho bạn nhưng hoạt động tốt cho người khác.
(Điều đó nói rằng, nếu bạn làm alias make
, bạn có thể nhận bash để bỏ qua các bí danh bằng cách gõ \make
.)
Tại sao không chỉ đề nghị sử dụng biến môi trường MAKEFLAGS như Eric nói? – xaxxon
Thiết lập môi trường MAKEFLAGS biến để -j 8
. Nếu bạn đang sử dụng csh hoặc tcsh, bạn có thể làm điều này với setenv MAKEFLAGS '-j 8'
. Nếu bạn đang sử dụng bash, bạn có thể làm điều này với export MAKEFLAGS='-j 8'
. Bạn có thể muốn đặt lệnh này trong tệp khởi động của trình bao, chẳng hạn như .cshrc hoặc .bashrc (trong thư mục chính của bạn).
Thận trọng: Đặt mặc định như thế này sẽ áp dụng cho tất cả các yêu cầu thực hiện, kể cả khi bạn "tạo" một dự án khác với dự án của bạn hoặc chạy tập lệnh gọi. Nếu dự án không được thiết kế tốt, nó có thể có vấn đề khi nó được xây dựng với nhiều công việc thực thi song song.
Sẽ không hoạt động với GNU Hãy 4.1 – sanmai
Bạn có thể di chuyển /usr/bin/make
-/usr/bin/make_orig
và làm /usr/bin/make
kịch bản này:
#!/bin/sh
/usr/bin/make_orig -j 8 [email protected]
Hãy chắc chắn để chạy chmod +x /usr/bin/make
.
Thử phương pháp này nếu phương pháp đơn giản hơn trong my other answer không hoạt động. Phương pháp này không an toàn và có một chút kludge.
Thêm
MAKEOPTS='-j8'
MAKEFLAGS='-j8'
để /etc/make.conf
(tạo ra nó nếu nó không tồn tại).
Nếu điều đó không làm việc, thêm
export MAKEOPTS='-j8'
export MAKEFLAGS='-j8'
vào hồ sơ của toàn hệ thống của bạn (ví dụ:/etc/hồ sơ).
Đối với tôi, MAKEOPTS không hoạt động. Có thể MAKEFLAGS là tất cả những gì cần thiết.
đợi .. như thế nào đây không phải đệ quy gọi làm tức make -> làm -j 8 -> làm -j 8 -j 8 -> làm -j 8 -j 8 -j 8 – anon
Bí danh thay đổi lệnh make thành mặc định 'make -j 8' Nó không gọi lệnh make. – Gazler
Điều này cũng có thể được đặt trong tệp .bashrc, do đó bạn không phải nhập nó vào mỗi trình bao, .bashrc nằm trong thư mục chính của bạn (trong Debian ít nhất). – Grundlefleck