2016-07-29 6 views
0

Ich habe eine Header-Datei Header1.h mit mehreren Funktionen, die in separaten .cpp implementiert sind, d. H. Func1.cpp, Func2.cpp.Mehrere Quelldateien für einen Header Makefile

Also, wenn ich hatte nur eine Header-Datei und ein CPP ich schreiben würde:

Func1.o: Header1.h Func1.cpp 
gcc -c Func1.cpp Header1.h 

Aber Schreiben:

Func1.o: Header1.h Func1.cpp 
    gcc -c Func1.cpp Header1.h 


Func2.o: Header1.h Func2.cpp 
    gcc -c Func2.cpp Header1.h 

funktioniert nicht.

Antwort

2

Sie schrieb:

Also, wenn ich hatte nur eine Header-Datei und ein CPP ich schreiben würde:

Func1.o: Header1.h Func1.cpp; gcc -c Func1.cpp Header1.h

Nein, würden Sie nicht. Sie fügen niemals eine Header-Datei in die Kompilierzeile ein: Der Compiler findet die Header-Datei aufgrund von #include Anweisungen in der Quelldatei.

Sie würden schreiben:

all: Func1.o Func2.o 

Func1.o: Header1.h Func1.cpp 
     gcc -c Func1.cpp 

Func2.o: Header1.h Func2.cpp 
     gcc -c Func2.cpp 

Dies ist jedoch nicht wirklich eine gute Make-Datei. Zuerst haben Ihre Quelldateien eine .cpp-Erweiterung, was bedeutet, dass es sich um C++ - Dateien handelt, aber Sie verwenden gcc, einen C-Compiler. Wenn Ihre Dateien C++ - Dateien sind, sollten Sie g++ als Compiler verwenden.

Zweitens, machen Sie bereits wissen, wie man eine Objektdatei aus einer Quelldatei erstellt, so dass Sie nicht einmal eine Regel schreiben müssen.

Ihr Make-Datei kann einfach sein:

CXX = g++ 

all: Func1.o Func2.o 

Func1.o: Header1.h 
Func2.o: Header1.h 

und das ist alles, was Sie brauchen.

Verwandte Themen