自己写过的一个简单实用Makefile

CC = mipsel-linux-gnu-gcc
CFLAGS= -g -Os -Wall  -I./include/ -I.
LDFLAGS= -lpthread -lrt -lmqtt -lpaho-mqtt3a -ljson-c -L./lib -L.

LIB_CFLAGS= -c -g -fPIC -Os -Wall -I./include/ -I.
LIB_LDFLAGS= -shared -lpthread -lrt -lpaho-mqtt3a -ljson-c  -L./lib 

libdir = .
testdir = ./test/

LIB_SO = libmqtt.so

LIB_SRC := $(wildcard $(libdir)/*.c)
LIB_OBJ := $(patsubst %.c,%.o,$(LIB_SRC))

TEST_EXE := $(testdir)test
TEST_SRC := $(wildcard $(testdir)/*.c)

#$(filter-out test.c, $(LIB_SRC))

.PHONY: lib test clean

all: lib test
lib: $(LIB_SO)
test: $(TEST_EXE)
$(TEST_EXE): $(LIB_SO) $(TEST_SRC)
    $(CC) $(CFLAGS) -o $@ $(TEST_SRC) $(LDFLAGS) 
    mipsel-linux-gnu-strip $(TEST_EXE)

$(LIB_SO): $(LIB_OBJ)
    $(CC) $^ $(LIB_LDFLAGS) -o $@
    mipsel-linux-gnu-strip $(LIB_SO)
$(LIB_OBJ):%.o:%.c
    $(CC) $(LIB_CFLAGS) $< -o $@
clean:
    rm *.o $(LIB_SO)

猜你喜欢

转载自blog.csdn.net/rikeyone/article/details/81215890