本程序可直接使用,为个人学习记录
OBJ1 = jhy1
OBJ2 = jhy2
AOBJS := $(OBJ1) $(OBJ2)
SOBJ1 := make_b.o make_c.o
SOBJ2 := make_d.o
objects := $(SOBJ1) $(SOBJ2)
#终极目标
all:$(OBJ1) $(OBJ2)
.PHONY:all
$(OBJ1):$(SOBJ1)
$(CC) -o $@ $^
$(OBJ2):$(SOBJ2)
$(CC) -o $@ $^
#$(ULDFLAGS)
dep_files := $(foreach f,$(objects),.$(f).d)
dep_files := $(wildcard $(dep_files))
III := -I./make_h/
ifneq ($(dep_files),)
include $(dep_files)
endif
$(objects):%.o:%.c
$(CC) -c -Wp,-MD,.$@.d $(III) -o $@ $<
.PHONY:clean
clean:
rm -rf $(AOBJS) *.o .*.o.d *.o.d
------------------------------------------------------------------------------------------------------------
文件内容:
make_b:
#include <stdio.h>
#include "make_b.h"
#include "main_d.h"
void out(void)
{
printf("ddmake_b22 %d\n",AA);
printf("make_d %d\n",gg);
}
make_b.h:
#ifndef _MAKE_B_H_
#define _MAKE_B_H_
#define AA 7
void out(void);
#endif
make_C.C:
#include <stdio.h>
#include "make_b.h"
#include "make_c.h"
int main(char argc, char *argv[])
{
printf("1234 -%d\n",BB);
out();
return 1;
}
make_c.h
#ifndef _MAKE_C_H_
#define _MAKE_C_H_
#define BB 55
#endif
make_d.h
#ifndef _MAKE_D_H_
#define _MAKE_D_H_
#define gg 15
#endif
make_d.c
#include <stdio.h>
#include "main_d.h"
int main(void)
{
printf("make_d\n");
return 1;
}