Makefile

比较专业的Makefile编写

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


.SUFFIXES:.cpp .o

SOURCE = main.cpp pub.cpp

OBJC = $(SOURCE:.cpp=.o)

EXEC = myapp


$(EXEC): ${OBJC}

$(CC) -o $(EXEC) $(OBJC)


.cpp.o:

$(CC) -o $@ -I$(INCLUDE) $(FLAGS) -c $<


clean:

rm -rf $(OBJC) $(EXEC)

示例2 添加了install选项

all: myapp

# Which compiler
CC = g++


# Where to install
INSTDIR = /usr/local/bin/


# Where are inlude files kept
INCLUDE = .

# Options for development
CFLAGS = -g -Wall -ansi

# Options for release

# CFLAGS = -O -Wall -ansi

.SUFFIXES: .cpp .o

SOURCE = main.cpp pub.cpp

OBJECT = $(SOURCE:.cpp=.o)

EXEC   = myapp

$(EXEC): $(OBJECT)

    $(CC) -o $(EXEC) $(OBJECT)

.cpp.o:

    $(CC) -I$(INCLUDE) $(CFLAGS) -o $@ -c $<

clean:

    -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