2011-08-07 18 views
2

hello.h、hello.cpp、main.cpp(これはhello.cppの簡単なテストベンチ)を含む私のプログラム用のMakefile(以下のコード)を書きました。私はターミナルで作る入力した後マクロを持つMakefileは実行可能ファイルを生成しません

はしかし、それは私に

メイクを伝えます: `hello.oは、」最新のものです。

他にもヒントはありますか?ありがとうございました!

#MACRO 
CAT_HOME = $(MGC_HOME) 
TARGET = my_tb 
#OBJECT1 = hello.o 
OBJECTS = hello.o main.o 
#OBJECT2 = main.o 
DEPENDS = hello.cpp main.cpp hello.h 
INCLUDES = -I"$(CAT_HOME)/shared/include" 
DEFINES = 
CXX = /usr/bin/g++ 
CXXFLAGS = -g -O3 $(DEFINES) $(INCLUDES) 

$(TARGETS) : $(OBJECTS) 
    $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) 

$(OBJECTS) : $(DEPENDS) 

#phony target to remove all objects and executables 
.PHONY: clean 
clean: 
    rm -f *.o 
+1

'TARGETS'とは何ですか? –

+0

それはひどいタイプミスです – drdot

答えて

2

あなたはTARGET変数を定義しますが、後で$(TARGETS)を使用するようにしてください。相違点があります。

また、すべての .oファイルがすべての .cppファイルに依存せすることは非効率的です。無条件にすべてを再コンパイルするリニアスクリプトを書くこともできます。対応する.cppから.oを作成するmakeの組み込み規則に依存しているので、その依存関係を明示的に宣言する必要はありません。したがって、関連する依存関係を失うことなく、すべての.cppファイルをDEPENDSから削除することができます。

関連する問題