Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - aiuto per creare un Makefile
Forum - C/C++ - aiuto per creare un Makefile

Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 16:36
Mercoledì, 25/01/2012
ecco l'ultima versione
Codice sorgente - presumibilmente Plain Text

  1. CC=gcc
  2. LDFLAGS=-g -Wall
  3. OBJECTS=main.o graph.o airport.o edge.o coda.o heap.o tree.o
  4. all: test
  5. test: $(OBJECTS)
  6.      $(CC) $(LDFLAGS) -o test $(OBJECTS)
  7. main.o: main.c graph.h tree.h
  8.      $(CC) -c main.c
  9. graph.o: graph.c graph.h coda.h heap.h tree.h
  10.      $(CC) -c graph.c
  11. airport.o: airport.c graph.h
  12.      $(CC) -c airport.c
  13. edge.o: edge.c graph.h
  14.      $(CC) -c edge.c
  15. coda.o: coda.c graph.h coda.h
  16.      $(CC) -c coda.c
  17. heap.o: heap.c graph.h heap.h
  18.      $(CC) -c heap.c
  19. tree.o: tree.c graph.h tree.h
  20.      $(CC) -c tree.c
  21. clean: rm -f test $(OBJECTS)



Allego anche il progetto se a qualcuno interessa...


Bonny ha allegato un file: prog.zip (21173 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Bonny il 26/01/2012 alle 9:53
PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Up
1
Down
V
Segnala al moderatore
Postato alle 16:46
Mercoledì, 25/01/2012
La sintassi e' sbagliata; riguardati la documentazione dei makefiles.

In generale:

"etichetta:" indica un target. Tutto quello che segue l'etichetta sulla stessa linea e' una dipendenza. Ad esempio:

"main.o: main.h main.cpp"

Indica che il target main.o e' dipendente da main.h e main.cpp.

Il comando da eseguire solitamente lo metti indentato sotto l'etichetta. Ad esempio:

main.o: main.h main.cpp
   g++ -o main.o main.cpp

Ti posto questo esempio di un mio progetto, vedi se riesci ad adattarlo per le tue esigenze...

Testo quotato


GCC=g++
CFLAGS=-c -g -Wall
LD=g++
LDFLAGS=-g -Wall
OBJECTS=DiskLinkedList.o HeaderNode.o Utils.o LinkedListNode.o

all: main

main: main.cpp $(OBJECTS)
    $(LD) $(LDFLAGS) -o main main.cpp $(OBJECTS)

DiskLinkedList.o: DiskLinkedList.cpp DiskLinkedList.h HeaderNode.o LinkedListNode.o Utils.o
    $(GCC) ${CFLAGS} -o DiskLinkedList.o DiskLinkedList.cpp

HeaderNode.o: HeaderNode.cpp HeaderNode.h
    $(GCC) ${CFLAGS} -o HeaderNode.o HeaderNode.cpp

LinkedListNode.o: LinkedListNode.cpp LinkedListNode.h
    $(GCC) ${CFLAGS} -o LinkedListNode.o LinkedListNode.cpp

Utils.o: Utils.cpp Utils.h
    $(GCC) ${CFLAGS} -o Utils.o Utils.cpp

clean:
    rm -f main $(OBJECTS)




pierotofy ha allegato un file: Makefile.zip (333 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da pierotofy il 27/01/2012 alle 16:41
Ho cercato di adattarlo ma non funziona mi da: Makefile:8: *** separatore mancante. Arresto. - Bonny - 25/01/12 17:29
Ho aggiunto il codice nel primo post da me creato - Bonny - 25/01/12 17:30
Assicurati che ci sia una tabulazione invece che spazi tra l'inizio di un target e il comando di gcc. - pierotofy - 25/01/12 18:42
Come vedi non ho tolto tutti gli spazi ma niente non funziona.. comunque grazie mille - Bonny - 25/01/12 19:17
No no.... devi togliere gli spazi e mettere una tabulazione al loro posto. - pierotofy - 25/01/12 19:28
Ma forse non ci arrivo semplice! ne ho fatto un altro seguendo varie esempi lo posto sul primo topic - Bonny - 26/01/12 09:49
Ho allegato il file con gli spazi convertiti in tabulazioni. - pierotofy - 27/01/12 16:41
E cambia editor di testo.... il tuo evidentemente fa il furbo e cambia le tabulazioni in spazi. - pierotofy - 27/01/12 16:42


Il mio blog: https://piero.dev
PM