Pagrindinis > Austrija, Programavimas > Makefile example

Makefile example

Birželis 10th, 2009 Ernestas Kardzys Komentuoti Komentarai

Some time ago I created my first Makefile. Now I have an Embedded Linux lecture. And the first task is to create a Makefile for the program. I hope this will be useful.

So, I have two source files:

/* first.c */

#include “all_func.h”

int foo() {
printf(“int foo()\r\n”);
}
/* second.c */
#include “all_func.h”

void foo2() {
printf(“void foo2()\r\n”);
}

And I also have a header file:

/* all_func.h */
#ifndef ALL_FUNC_H
#define ALL_FUNC_H

#include

int foo();
void foo2();

#endif

I also need one file for testing my functions:

/* test.c */
#include “all_func.h”

int main() {
foo();
foo2();
}

So, I need to build all this mess.
Solution: gcc first.c second.c test.c -o test.
The problem: if I’ll have more files the gcc line will be too huge.
Solution: create a makefile.
The problem: it takes some time to create one if you don’t use IDE for creating your project.
Well, let’s make a Makefile.
It looks like that:

# File: Makefile
# Makefile for my Embedded Linux assignment

CC = gcc
CFLAGS = -Wall
CMDTEST = test_all
LIBOBJS = first.o second.o
CMDOBJS = test.o $(LIBOBJS)

# Make a test application
$(CMDTEST): $(CMDOBJS)
$(CC) $(CFLAGS) $(CMDOBJS) -o $@

# Make object file from the first file
first.o: first.c all_func.h
$(CC) $(CFLAGS) -c first.c -o $@

# Make object file from the second file
second.o: second.c all_func.h
$(CC) $(CFLAGS) -c second.c -o $@

clean:
-rm -f *.o
-rm -f $(LIBRARY)
-rm -f $(CMDTEST)

It works! Try make or make clean :)

  1. Kol kas nėra komentarų.
  1. Citatų nėra.