2010年11月26日 星期五

Makefile for multi-job

一般 makefile 的寫法, 通常無法支援多個工作同時進行 (make -jN), 而 make 記得好像是 3.5? 版開始支援這個語法, 可以同時跑多個 make rule 完成整個專案. 不過我這裡講的是 c++ 用的:

我覺的 makefile 裡有幾個重點要貼到, 以下是我自己的例子:

EXEN = test
SRC = main.cpp timer.cpp
OBJ = $(SRC:.cpp=.o) ;//這地方會指定將哪些副檔名更名成哪種副檔名
.cpp.o:
$(CXX) $(CFLAGS) $< -o $@ ;// $< 這個就是整串字串裡逐項抓出..
$(EXEN): $(OBJ)
$(CXX) -o $(EXEN) $(OBJ)
all: $(SRC)
這樣可以視需要指派 make 一次要跑的 jobs 數量 (-jN, N是數字, 看你有幾顆CPU..)
也可以這樣取得系統內可用 CPU 數量:
CPUS = $(shell cat /proc/cpuinfo |grep cores|sort -u|cut -f2 -d":"|cut -f2 -d" ")

祝各位有幾顆 CPU 就打爆幾顆 CPU.

沒有留言: