2016-03-21 9 views
1

を使用して一つのルールで複数の種類のファイルをコンパイルします。 %.o:%.cpp行を展開して、* .cppファイルと* .ccファイルを1行で処理する可能性はありますか?私は次のようなものを期待しています:%.o:%.cpp%.ccは、私は、次のメイクファイルを持っていると仮定しましょうメイク

多くのおかげで、 Toreno

+0

.ccファイルと.cppファイルの両方をコンパイルするのに同じコンパイラ/コマンドラインを使用しますか? –

+0

はい、まったく同じです。 –

+0

すべての.ccファイルの名前を.cppに変更する方法はありますか? –

答えて

0

あなたは本当にただmakeの組み込みルールを再発明していますが、組み込みは、上記

CCFILES := $(wildcard *.cc) 
CPPFILES := $(wildcard *.cpp) 

.PHONY: all 
all: $(CCFILES:.cc=.o) $(CPPFILES:.cpp=.o) 
に短縮することが可能規則に次は

CCFILES  := $(wildcard *.cc) 
CPPFILES := $(wildcard *.cpp) 
CCOBJFILES := $(CCFILES:.cc=.o) 
CPPOBJFILES := $(CPPFILES:.cpp=.o) 
OBJFILES := $(CCOBJFILES) $(CPPOBJFILES) 

.PHONY: all 
all: $(OBJFILES) 

$(CCOBJFILES): %.o: %.cc 
$(CPPOBJFILES): %.o: %.cpp 
$(OBJFILES): 
    $(CXX) -c $< -o [email protected] 

を動作するはずです

+0

パーフェクト!これはまさに私が探していたものです。さらに、私は組み込みルールについては知らなかったのですが、今はさらにスマートでシンプルです! –

関連する問題