2016-12-09 11 views
3

私は非常に強力なメイクファイルツールについて学びました。私は4つの異なるメインと3つの共通クラスを持っているので、動作させる方法を理解しようとしていました。C++ - 複数のファイルをコンパイルする

私は何を取得したいことは次のとおりです。

リニア:g++ -o linear linear.cpp

Linear5:g++ -o linear5 linear5.cpp Contenidor.cpp Contenidor.h

対数:g++ -o logarithmic logarithmic.cpp Contenidor.cpp Contenidor.h

定数:以下のMakefileのコードでg++ -o constant constant.cpp Contenidor.cpp Contenidor.h

all: linear5 linear logarithmic constant 

linear5: linear5.o 
    g++ -o linear5 linear5.o 

linear5.o: linear5.cpp 
    g++ -cpp linear5.cpp 

Contenidor.o: Contenidor.cpp 
    g++ -cpp Contenidor.cpp 

linear: linear.o Contenidor.o 
    g++ -o linear linear.o Contenidor.o 

linear.o: linear.cpp 
    g++ -cpp linear.cpp 

logarithmic: logarithmic.o Contenidor.o 
    g++ -o logarithmic logarithmic.o Contenidor.o 

logarithmic.o: logarithmic.cpp 
    g++ -cpp logarithmic.cpp 

constant: constant.o Contenidor.o 
    g++ -std=gnu++0x -o constant constant.o Contenidor.o 

constant.o: constant.cpp 
    g++ -cpp constant.cpp 

clean: 
    rm *.o 

しかし、私はmakeコマンドを実行しようとするとエラーが飛び出す:

g++ -cpp linear5.cpp 
g++ -o linear5 linear5.o 
g++: linear5.o: No such file or directory 
g++: no input files 

答えて

4

問題は、二段階のコンパイルを行う方法である:あなたは

file.o: file.cpp 
    g++ -cpp file.cpp 
のすべてのインスタンスを変更する必要があります

file.o: file.cpp 
    g++ -c -o file.o file.cpp 

この方法で、あなただけコンパイルする++グラム伝えます(-c)あなたのファイルをリンクしません。出力はオブジェクトファイルになりますが、それでも-oで名前を指定する必要があります。

その後、オブジェクトファイルは後の手順で使用できます。

+0

私はすでにコードを変更しました!あなたの助けに感謝! ^^ – magalenyo

関連する問題