#示例1:在上一個示例的基礎上再增加一個可執行檔案03test[修改之處已标紅]
.PHONY: clean all
CC = gcc
CFLAGS = -Wall -g
BIN = 01test 02test 03test
SOURCES = $(BIN:=.c)
OBJECTS = $(BIN:=.o)
all: $(BIN)
01test: 01test.o
02test: 02test.o
03test: 03test.o
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
clean:
-rm -rf $(BIN) $(OBJECTS)
#示例2:在示例1上為03test添加一個自編的頭檔案pub.h[修改之處已标紅]
03test: 03test.o pub.o
#4 Mackfile
.SUFFIXES:.cpp .o
CC=g++
SOURCE=main.cpp pub.cpp
OBJC=$(SOURCE:.cpp=.o) #将.cpp檔案全部替換為.o檔案
EXEC=mytest
all:$(OBJC)
$(CC) -o $(EXEC) $(OBJC)
.cpp.o:
$(CC) -o $@ -c $<
rm -rf $(OBJC)

附-如果一條語句在執行Mackfile檔案時,不想列印出來,則在其前面加上@符号
#示例1
all: myapp
# Which compiler
CC = g++
# Where are include files kept
INCLUDE = .
# Options for development
FLAGS = -g -Wall -ansi
# Options for release
# CFLAGS = -O -Wall -ansi
SOURCE = main.cpp pub.cpp
OBJC = $(SOURCE:.cpp=.o)
EXEC = myapp
$(EXEC): ${OBJC}
$(CC) -o $(EXEC) $(OBJC)
$(CC) -o $@ -I$(INCLUDE) $(FLAGS) -c $<
rm -rf $(OBJC) $(EXEC)
#示例2-添加了install選項
# Where to install
INSTDIR = /usr/local/bin/
# Where are inlude files kept
CFLAGS = -g -Wall -ansi
.SUFFIXES: .cpp .o
OBJECT = $(SOURCE:.cpp=.o)
EXEC = myapp
$(EXEC): $(OBJECT)
$(CC) -o $(EXEC) $(OBJECT)
$(CC) -I$(INCLUDE) $(CFLAGS) -o $@ -c $<
-rm -rf $(OBJECT)
install: $(EXEC)
@if [ -d $(INSTDIR) ] ; then \
cp $(EXEC) $(INSTDIR) ; \
chmod a+x $(INSTDIR)/$(EXEC) ; \
chmod og-w $(INSTDIR)/$(EXEC) ; \
echo "Installed in $(INSTDIR)" ; \
else \
echo "Sory, $(INSTDIR) does not exist." ; \
fi