PDA

View Full Version : Makefile


agenio
23-05-2004, 15:03
Forse ho sbagliao sezione però io ci tento:D

Ho linux suse 7.1 e il mio problema è come azzo devo fare per creare sto benedetto makefile e dove metterlo.
In pratica io lancio il programma Vim, scrivo il mio programmino in c++ lo salvo e sempre in vim lancio il comando make, ma mi appare una scritta che mi dice che manca il file makefile.

Sono un super ignorante di linux quindi abbiate compassione di me:D :D


Agenio

VICIUS
23-05-2004, 16:19
Il Makefile (occhio alle minuscole e alle maiuscole) va messo nella stessa directory dei sorgenti. La sintassi è molto simile a quella di uno script per shell unix. Per la sintassi esatta puoi guardare su google ci sono milioni di howto e guide su come creare dei makefile.

se hai ancora dubbi chiedi pure.

ciao ;)

agenio
23-05-2004, 18:20
ma se ho capito bene bisogna fare un Makefile per ogni programma che si vuole compilare oppure ne basta uno per tutti

VICIUS
23-05-2004, 19:40
Originariamente inviato da agenio
ma se ho capito bene bisogna fare un Makefile per ogni programma che si vuole compilare oppure ne basta uno per tutti

Il makefile specifica le dipendenze che i file sorgenti hanno tra di loro quindi è ovvio che ne devi fare uno per ogni programma. certo poi esistono alcuni "trucchetti" e "chicche" che permettono di facilitare molto il compito del programmatore :D

ciao ;)

ilsensine
24-05-2004, 09:03
Originariamente inviato da agenio
ma se ho capito bene bisogna fare un Makefile per ogni programma che si vuole compilare oppure ne basta uno per tutti
Il Makefile è sostanzialmente uno script che informa make come usare il compilatore. Se devi compilare solo uno o due file puoi farne a meno.

Ecco un howto molto basilare su come fare un makefile per i tuoi progetti -- quello che devi fare è impostare correttamente TARGET e OBJECTS; più raramente le altre opzioni:

CC=gcc
CXX=g++

# Opzioni di ottimizzazione per gcc -- inserisci quelle che vuoi.
# Queste sono normalmente sufficienti:
CFLAGS=-O2 -g

# Opzioni di ottimizzazione per g++ -- puoi aggiungere quelle che vuoi
CXXFLAGS=${CFLAGS} -felide-constructors

# Opzioni per il preprocessore. Normalmente non servono. Può essere usato
# per includere directory al path degli include, o definire macro. Ad esempio:
# CPPFLAGS=-I/opt/include -DDEBUG

# Opzioni per il linker. Qui puoi indicare le librerie aggiuntive necessarie ed eventuali
# path di ricerca non standard delle librerie.
# Ricorda di aggiungere:
# -lm se usi funzioni in virgola mobile (sin, cos...)
# -lstdc++ se usi codice c++
# -lpthread se usi i thread
# Per programmi semplici in c non è necessario indicare nulla.
LDFLAGS=

# Metti qui il nome del tuo eseguibile
TARGET=nome_programma

# Metti qui i file .o che lo formeranno (ottenuti compilando i file .c o .cpp);
# ad esempio:
OBJECTS=file1.o file2.o


# Le righe seguenti non dovrebbero essere modificate
all: ${TARGET}

clean:
<tab>rm -f ${TARGET} ${OBJECTS}

${TARGET}: ${OBJECTS}
<tab>${CC} -o $@ $^ ${LDFLAGS}

Nota che il simbolo che ho indicato con <tab> DEVE essere il carattere tab (non degli spazi!!)

agenio
25-05-2004, 18:43
ma cos'è questo famigerato carattere TAB?
Fatemi degli esempi affinchè possa capire anch'io.
Può essere per esempio un sempice punto e virgola?

agenio
25-05-2004, 18:46
ah un'altra cosa grazie mille per avermi postato il codice giusto di un Makefile

Ciao Agenio:D

VICIUS
25-05-2004, 19:10
Originariamente inviato da agenio
ma cos'è questo famigerato carattere TAB?
Fatemi degli esempi affinchè possa capire anch'io.
Può essere per esempio un sempice punto e virgola?
TAB -> tasto di tabulazione. Insomma quello con le due freccine contrapposte. quello sopra il Caps Lock. Quello sotto il tasto della back slash (\) e a sinistra della Q. Sperro di aver localizato bene il tasto :D

L'esempio di ilsensine è perfetto ma se ne vuoi altri da cui perndere ispirazione posso posterteli anche io.

ciao ;)

agenio
28-05-2004, 17:21
Oh afferrato ma il tab non si troverà mica tra il "\" e il "Caps Lock":D


Ciao Agenio


P.s= grazie mille

fpucci
28-05-2004, 19:58
Originariamente inviato da agenio
Oh afferrato ma il tab non si troverà mica tra il "\" e il "Caps Lock":D


E' proprio quello :D