万能树状目录Makefie编写

编译的目录结构如下

├── bin
│ └── myapp
├── f1
│ ├── f1.c
│ └── Makefile
├── f2
│ ├── f2.c
│ ├── f3.c
│ └── Makefile
├── include
│ └── myinclude.h
├── lib
│ └── libXXX.so
├── main
│ ├── main.c
│ └── Makefile
├── Makefile //根目录下makefile
└── obj
├── f1.o
├── f2.o
├── f3.o
├── main.o
└── Makefile

各级Makefile源码

根目录下makefile

CC = gcc 
SUBDIRS = f1 f2 main obj

C_FLAGS := -std=c++11 -Wall -Wextra -g
C_FLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv4 -ffunction-sections -mno-unaligned-access -fno-aggressive-loop-optimizations

BIN 	 = myapp
OBJS_DIR = obj
BIN_DIR  = bin
LIB		 = ../lib
INCLUDE	 = ../include
SDL_LIB  = ../lib/SDL
SDL_INC  = ../include/SDL

LIBRARIES = -lpthread -lm -ldl

HISI_LIBRARIES	:= $(LIB)/libxxx.a

export CC BIN OBJS_DIR BIN_DIR LIB INCLUDE SDL_LIB SDL_INC

all:CHECK_DIR $(SUBDIRS)
			

CHECK_DIR:		
	mkdir -p $(BIN_DIR)

$(SUBDIRS):ECHO
	make -C $@
ECHO:
	@echo $(SUBDIRS)
	@echo begin compile
clean:
	@$(RM) $(OBJS_DIR)/*.o
	@rm -rf $(BIN_DIR)

obj过程文件目录下makefile
	OBJS = $(wildcard *.o)
	
	../$(BIN_DIR)/$(BIN): $(OBJS)
		$(CC) $(C_FLAGS) -L$(LIB) -o $@ $^ 

源码子目录f1 f2 main目录下makefile

SRC = ${wildcard *.c}
OBJS = ${patsubst %.c,%.o,$(SRC)}

all:$(OBJS)
	mv $(OBJS) ../$(OBJS_DIR)/

$(OBJS):%.o:%.c
	$(CC) $(C_FLAGS) -I$(INCLUDE) -I$(SDL_INC) -L$(LIB) -c -o $@ $< $(LIBRARIES) $(HISI_LIBRARIES)

编译过程文件obj部分makefile

SRC = ${wildcard *.cpp}
OBJS = ${patsubst %.cpp,%.o,$(SRC)}

all:$(OBJS)
	mv $(OBJS) ../$(OBJS_DIR)/


$(OBJS):%.o:%.cpp
	$(CC) $(C_FLAGS) -I$(INCLUDE) -I$(SDL_INC) -L$(LIB) -c -o $@ $< $(LIBRARIES) $(HISI_LIBRARIES)

源码部分

main.c

#include <stdio.h>
#include "myinclude.h"

int main(void)
{
	print1();
	print2();
	print3();
	return 0;
}

f1.c

#include "myinclude.h"

void print1()
{
	printf("msg from f1.c...\n");
	return;
}

f2.c

#include "myinclude.h"

void print2()
{
	printf("msg from f2.c...\n");
	return;
}

f3.c

#include "myinclude.h"

void print3()
{
	printf("msg from f3.c...\n");
	return;
}
发布了6 篇原创文章 · 获赞 1 · 访问量 307

猜你喜欢

转载自blog.csdn.net/weixin_41176628/article/details/102824731