Makefile

A good utility one should know.

Makefile Construct

USE_UCLIBC=1

INSTDIR   = $(prefix)/bin

INSTMODE  = 0755

PROGS     = sum

SRCS      = main.c input.c sum.c output.c

OBJS      = main.o input.o sum.o output.o

CFLAGS    += -Wall

all:    $(PROGS)

$(PROGS): $(OBJS)

    $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@

install:    $(PROGS)

    $(INSTALL) -d $(INSTDIR)

    $(INSTALL) -m $(INSTMODE) $(PROGS) $(INSTDIR)

clean:

    rm -rf $(PROGS) *.o core

The files looks like ...

main.c

#include"input.h"

#include"output.h"

int main()

{

int a=0;

a=input();

output(a);

return 0;

}

input.c

#include"input.h"

int input()

{

int a,b;

printf("Enter numbers..\n1ST:  ");

scanf("%d",&a);

printf("2ND:  ");

scanf("%d",&b);

return sum(a,b);

}

input.h

#include<stdio.h>

#include"sum.h"

#ifndef INPUT

#define INPUT

int input();

#endif

sum.c

#include"sum.h"

int sum(int a, int b)

{

return (a+b);

}

sum.h

#ifndef SUM

#define SUM

int sum(int ,int );

#endif

output.c

#include"output.h"

void output(int sum)

{

printf("SUM: %d \n",sum);

}

output.h

#include<stdio.h>

#ifndef OUTPUT

#define OUTPUT

void output(int);

#endif

and output looks like:

nandan@nandan:~/make_test$ make

cc -Wall   -c -o main.o main.c

cc -Wall   -c -o input.o input.c

cc -Wall   -c -o sum.o sum.c

cc -Wall   -c -o output.o output.c

cc  main.o input.o sum.o output.o  -o sum

nandan@nandan:~/make_test$ ./sum

Enter numbers..

1ST:  1

2ND:  2

SUM: 3