2013-10-02 12 views
5

Próbuję zrobić plik Makefile z wieloma plikami. Czy ktoś może mi pomóc? Pliki, które mam, to file1.cpp, file2.h i main.cppC++ makefile w systemie Linux z wieloma plikami * .cpp

plik1.cpp zawiera moje funkcje. file2.h zawiera deklarację moich funkcji.

main.cpp [obejmuje file2.h w kodzie] file1.cpp [obejmuje file2.h w kodzie]

zrobiłem

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

ale daje mi mnóstwo błędów, gdy Próbuję skompilować. moje kody działają doskonale w czasie zaćmienia.

+0

Najlepsza odpowiedź jest tutaj. http://stackoverflow.com/questions/3202136/using-g-to-compile-multiple-cpp-and-h-files – user3497443

Odpowiedz

5

musisz skompilować wszystkie pliki .cpp, których używasz (zakładam, że nie są one zawarte gdzieś). W ten sposób kompilator będzie wiedział, że file1.cpp i main.cpp są używane razem. Również sugerowałbym używanie g ++ zamiast gcc, ponieważ g ++ jest specyficznym kompilatorem C++, podczas gdy gcc obsługuje C i C++.

Spróbuj użyć:

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

Również polecam używać zmiennych Makefile tak:

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

Nadzieja to pomaga :)

+0

, dzięki temu bardzo pomaga. okazało się, że mogę po prostu przeciągnąć plik make eclipse przez XD – NewFile

1

ale daje mi mnóstwo błędów podczas próby kompilacji. moje kody działają doskonale w czasie zaćmienia.

gcc nie jest kompilatorem C++. Zamiast tego użyj g++.

Twój Makefile powinien wyglądać tak, można go wykorzystać implicit rules:

all: main 

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

gcc jest kompilatorem C++. g ++ używa gcc, ale tylko w taki sposób, że traktuje wszystkie pliki jako pliki C++ (w tym pliki *. c). – elimirks

Powiązane problemy