天天看點

Makefile學習(二)[第二版]

#示例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)

Makefile學習(二)[第二版]

附-如果一條語句在執行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

繼續閱讀