func_a.c
#include <stdio.h>
#include "func_a.h"
void func_a()
{
printf("%s\n", __FUNCTION__);
}
func_b.c
#include <stdio.h>
#include "func_b.h"
void func_b()
{
printf("%s\n", __FUNCTION__);
}
~
include/func_a.h
void func_a();
include/func_b.h
void func_b();
main.c
#include <stdio.h>
#include "func_a.h"
#include "func_b.h"
int main()
{
func_a();
func_b();
return 0;
}
~
Makefile
TGT := hello
SRCS := func_a.c func_b.c main.c
DEP := dep
CFLAGS := -O2 -I./include
LDFLAGS :=
$(TGT): $(SRCS:.c=.o)
$(CC) $(LDFLAGS) -o $@ $^
#$(SRCS:.c=.o):
# $(CC) $(CFLAGS) -c $<
func_a.o: func_a.c include/func_a.h
$(CC) $(CFLAGS) -c $<
func_b.o: func_b.c include/func_b.h
$(CC) $(CFLAGS) -c $<
main.o: main.c include/func_a.h include/func_b.h
$(CC) $(CFLAGS) -c $<
#$(DEP): $(SRCS)
$(DEP): $(SRCS) include/func_a.h include/func_b.h
$(CC) $(CFLAGS) -MM $(SRCS) >$@
@sed -i "s/: / $(@): /g" $@
#func_a.o: func_a.c include/func_a.h
#func_b.o: func_b.c include/func_b.h
#main.o: main.c include/func_a.h include/func_b.h
#dep: main.c func_a.c func_b.c include/func_a.h include/func_b.h
sinclude $(DEP)
#%.o: %.c
# $(CC) -c $<
#func_a.o: func_a.c func_a.h
# $(CC) -c $<
#func_b.o: func_b.c func_b.h
# $(CC) -c $<
#main.o: main.c func_a.h func_b.h
# $(CC) -c $<
clean:
$(RM) $(SRCS:.c=.o) $(TGT) $(DEP)