[linux] Re: lege makefile

Robert M. Stockmann stock op stokkie.net
Vr Aug 15 00:54:13 CEST 2008


On Thu, 14 Aug 2008, Geert Stappers wrote:

> Date: Thu, 14 Aug 2008 14:17:31 +0200
> From: Geert Stappers <stappers op stappers.nl>
> Reply-To: linux op lists.nllgg.nl
> To: linux op lists.nllgg.nl
> Subject: [linux] lege makefile
> 
> Hoi,
> 
> Is het mogelijk een lege makefile te hebben?
> En zo ja, hoe ziet die er dan uit?
> 
> 
> Als er geen makefile is, komt de melding:
> make: *** No targets specified and no makefile found.  Stop.
> 
> 
> Nu heb ik een makefile van twee regels:
> all:
> 	@echo empty makefile
> 
> Dat gaat goed, tot dat er een `make clean` uitgevoerd wordt.
> make: *** No rule to make target `clean'.  Stop.
> 
> Met een regel extra in de makefile, wordt het 
> all:
> clean:
> 	@echo empty makefile
> 
> Daarmee is `make` en `make clean` mogelijk,
> maar bij een volgend "target" zal het misgaan ...
> 
> Bestaat er zo iets als een "any target", bijvoorbeeld
> all:
> $ANYTARGET:
> 	@echo empty makefile
> 
> 

Hoi,

lege Makefile? ehhh `touch Makefile` ?

De vaardigheid om een werkende Makefile te creeren vanaf scratch is 
inderdaad erg handig. Hier is een Makefile voorbeeld waarmee de client 
/server socket example sourcecode uit het boek "Unix Network Programming" 
van W. Richard Stevens [1] wordt gecompileerd :

Makefile
------------------------------------------------------------------------
CC = gcc
CFLAGS = -O2
RM = rm -f

OBJS = beep.o daemon.o dg_cli.o dg_echo.o error.o readline.o \
	readn.o sig_child.o str_cli.o str_echo.o writen.o

all: server client

server: server.o $(OBJS)
	$(CC) -o server server.o $(OBJS)

client: client.o $(OBJS)
	$(CC) -o client client.o $(OBJS)
clean:
	$(RM) client server *.o
 
------------------------------------------------------------------------

Een belangrijke vuistregel die meestal wordt vergeten is dat de regels 
die onder een make definitie staan, zoals "server:" allemaal ge-indent 
moeten worden met een <TAB>, dus niet met 8 spaties.

Als je een portable source code pakket wilt bouwen kom je echter niet 
om de gnu autotools heen. Er zijn een aantal handige autotool tutorials 
die je toch aardig op weg kunnen helpen [2][3][4].

Vr.gr.

Robert
PS.
[1] UNIX Network Programming (Paperback)
   by W. Richard Stevens (Author) 
   Paperback: 768 pages
   Publisher: Prentice Hall PTR; US Ed edition (February 2, 1990)
   Language: English
   ISBN-10: 0139498761
   ISBN-13: 978-0139498763
   http://www.amazon.com/exec/obidos/ASIN/0139498761/

[2] "Autoconf Automake Tutorial"
   http://mij.oltrelinux.com/devel/autoconf-automake/

[3] "Autotools Tutorial"
   Copyright Sarah George,
   Developing Programmers .com, Blog Archive
   http://www.developingprogrammers.com/index.php/2006/01/05/autotools-tutorial/

[4] "Introduction to GNU Build Tools"
   By Neelakanth Nadgir, June 2001,
   http://developers.sun.com/solaris/articles/gnu.html
-- 
Robert M. Stockmann - RHCE
Network Engineer - UNIX/Linux Specialist
crashrecovery.org  stock op stokkie.net




More information about the Linux mailing list