2016-07-29 23 views
0

ヘッダーファイルHeader1.hには複数の機能があり、別々の.cpp(つまりFunc1.cpp、Func2.cpp)で実装されています。1つのヘッダーの複数のソースファイルMakefile

だから私は、私が書くでしょう1つのヘッダファイルと1つのCPP持っていた場合:

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

しかし執筆:

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


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

は動作しませんが。

答えて

2

あなたが書いた:

を私は私が書くでしょう1つのヘッダファイルと一つのcppを持っていたので、場合:

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

いいえ、そうではありません。コンパイル行にヘッダファイルを置くことはありません。コンパイラは、ソースファイルの#include文のためにヘッダファイルを見つけます。

あなたはこれを記述します。

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 

しかし、これは本当に良いメイクファイルではありません。まずソースファイルのファイル名は.cppで、C++ファイルであることを示していますが、Cコンパイラであるgccを使用しています。ファイルがC++ファイルの場合は、g++をコンパイラとして使用する必要があります。

第2に、makeはソースファイルからオブジェクトファイルを作成する方法を既に知っているので、ルールを記述する必要はありません。

あなたのメイクはちょうどすることができます:

CXX = g++ 

all: Func1.o Func2.o 

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

、それはあなたが必要とするすべてです。

関連する問題