2013-10-02 16 views
5

Sto provando a creare un makefile con più file. Qualcuno può aiutarmi? I file che ho sono file1.cpp, file2.h e main.cppMakefile C++ su Linux con più file * .cpp

file1.cpp contiene le mie funzioni. file2.h contiene la dichiarazione delle mie funzioni.

main.cpp [include file2.h nel codice] file1.cpp [include file2.h nel codice]

ho fatto

all: main 
gcc -g -Wall -o main main.cpp 

ma mi dà un sacco di bug quando provo a compilare. i miei codici funzionano perfettamente su Eclipse.

+0

Miglior risposta è proprio qui. http://stackoverflow.com/questions/3202136/using-g-to-compile-multiple-cpp-and-h-files – user3497443

risposta

5

è necessario compilare tutti i file cpp che usate (presumo che non sono inclusi in qualche luogo). In questo modo il compilatore saprà che file1.cpp e main.cpp vengono usati insieme. Inoltre suggerirei di usare g ++ invece di gcc, perché g ++ è lo specifico compilatore C++ mentre gcc supporta C e C++.

Prova con:

g++ -g -Wall -o main main.cpp file1.cpp 

Anche io consiglierei di usare le variabili Makefile come questo:

SOURCES = main.cpp file1.cpp 
g++ -g -Wall -o main $(SOURCES) 

Spero che questo aiuti :)

+0

grazie aiuta molto. ho scoperto che posso semplicemente trascinare il mio make-up eclissi oltre XD – NewFile

1

ma mi dà un sacco di errori quando provo a compilare. i miei codici funzionano perfettamente su Eclipse.

gcc non è un compilatore C++. Utilizzare invece g++.

tuo Makefile dovrebbe apparire come tale, può sfruttare implicit rules:

all: main 

CXXFLAGS+=-g -Wall 
LDLIBS+=-lstdc++ 
main: file1.o main.o 
+2

gcc è un compilatore C++. g ++ usa gcc, ma proprio nel modo in cui tratta tutti i file come file C++ (inclusi i file * .c) – elimirks