案例一:
# CROSS_COMPILE = arm-hisiv300-linux-
CC = gcc
AR = ar
# LD=$(CROSS_COMPILE)ld
IFLAG = -Ibuild\
-Iinclude\
-Isrc\
CFLAGS = $(IFLAG) -O2 -Wall -D__linux__
SRCS = $(wildcard build/*.cpp) $(wildcard src/*.cpp)
OBJS = $(patsubst %.cpp,%.o,$(SRCS))
TARGET = HK_ADecode.a
all: $(OBJS) $(TARGET)
$(TARGET): $(OBJS)
$(AR) rcs $(TARGET) $(OBJS)
.cpp.o:
$(CC) $(CFLAGS) -c $<
clean:
rm -f *.o *.a $(OBJS)
rm -rf $(DIR)
案例二:
CC = gcc
AR = /usr/bin/ar rc
RANLIB = /usr/bin/ranlib
INCLUDE_DIR = -Ibuild\
-Iinclude\
-Isrc\
CFLAGS = -Wall -s -fPIC -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE -D__INTEL_COMPILER $(INCLUDE_DIR)
SOURCES = $(wildcard build/*.cpp) $(wildcard src/*.cpp)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES)))
EXECUTABLE = adecode.a
OBJPATH = ./
all: $(OBJS) $(EXECUTABLE)
$(EXECUTABLE): $(OBJS)
$(AR) $(EXECUTABLE) $(OBJS)
$(RANLIB) $(EXECUTABLE)
.cpp.o:
$(CC) $(CFLAGS) -c $<
.c.o:
$(CC) $(CFLAGS) -c $<
.PHONY: clean
clean:
rm -f $(notdir $(OBJS)) *.a
生成.o说明:
方法一 、
1、将.o生成在和.cpp相同目录下(加上 -o $@)
.cpp.o:
$(CC) $(CFLAGS) -c $< -o $@
2、链接所有.o时,需要目录
$(TARGET): $(OBJS)
$(AR) rcs $(TARGET) $(OBJS)
方法二、
1、将.o生成在和Makefile相同目录下(不加 -o $@)
.cpp.o:
$(CC) $(CFLAGS) -c $<
2、链接所有.o时,不需要目录
$(TARGET): $(OBJS)
$(AR) rcs $(TARGET) $(notdir $(OBJS) )