2013-10-02 6 views
5

Я пытаюсь сделать make-файл с несколькими файлами. Кто-нибудь может мне помочь? Файлы, которые у меня есть, - file1.cpp, file2.h и main.cppC++ makefile в Linux с несколькими файлами * .cpp

file1.cpp содержит мои функции. file2.h содержит объявление моих функций.

main.cpp [включает file2.h в коде] file1.cpp [включает file2.h в коде]

я сделал

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

но это дает мне тонны ошибок, когда Я пытаюсь скомпилировать. мои коды отлично работают на eclipse.

+0

Лучшего ответа прямо здесь. http://stackoverflow.com/questions/3202136/using-g-to-compile-multiple-cpp-and-h-files – user3497443

ответ

5

вам необходимо собрать все файлы .cpp, которые вы используете (я предполагаю, что они не включены где-то). Таким образом, компилятор будет знать, что файлы file1.cpp и main.cpp используются вместе. Также я бы предложил использовать g ++ вместо gcc, потому что g ++ - это конкретный компилятор C++, в то время как gcc поддерживает C и C++.

Попробуйте использовать:

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

Кроме того, я бы рекомендовал использовать Makefile переменными, как это:

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

Надеется, что это помогает :)

+0

спасибо, что это помогает. оказалось, что я могу просто перетащить мой файл затмения, а также XD – NewFile

1

но он приносит мне кучу ошибок, когда я пытаюсь скомпилировать. мои коды отлично работают на eclipse.

gcc не является компилятором C++. Вместо этого используйте g++.

Ваш Makefile должен выглядеть так, он может использовать implicit rules:

all: main 

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

gcc - компилятор C++. g ++ использует gcc, но просто так, что он обрабатывает все файлы как файлы на C++ (в том числе * .c файлы) – elimirks

Смежные вопросы