Ciao a tutti,
finalmente ho (forse) finito il programma che stavo facendo.
In tutto i sorgenti si trovano su 7 file diversi, quindi ho pensato che sarebbe stata un'ottima cosa usare make (su ubuntu) per compilarli separatamente.
Ho pensato quindi di fare questo makefile.
codice:
CC = g++
CFLAGS = -g -Wall
ALL_MODULES = square_matrix.o kramer.o error_maker.o main.o
#Programma eseguibile
kramer: $(ALL_MODULES)
$(CC) $(CFLAGS) $(ALL_MODULES) -o kramer
#Codice del programma
main.o: main.cc square_matrix.hpp kramer.hpp
$(CC) $(CFLAGS) main.cc -c main.o
#Modulo che risolve i sistemi lineari
kramer.o: kramer.cc kramer.hpp
$(CC) $(CFLAGS) kramer.cc -c kramer.o
#Modulo che gestisce le matrici
square_matrix.o: square_matrix.cc square_matrix.hpp
$(CC) $(CFLAGS) square_matrix.cc -c square_matrix.o
#Modulo che produce i codici di errore
error_maker.o: error_maker.cc error_maker.hpp
$(CC) $(CFLAGS) error_maker.cc -c error_maker.o
Per ogni target ho messo il file .cc e il relativo header, e l'opzione -c lo fa compilare come modulo senza il linking...
Per il main ho inserito come dipendenze solo il suo .cc e gli header che include, e poi l'eseguibile ha come dipendenze tutti gli altri .o.
Però quando lancio make, ottengo questo output:
codice:
g++ -g -Wall square_matrix.cc -c square_matrix.o
g++: square_matrix.o: File o directory non esistente
make: *** [square_matrix.o] Errore 1
In teoria, la prima riga dovrebbe creare proprio il file square_matrix.o, che infatti compare nella cartella, eppure make insiste che non c'è e non compila... cosa sbaglio?
(Magari la sezione? Ero indeciso se andava in Linux e Software )