2016-10-19 6 views
1

$TESTOBJDIRは、作成するバイナリを入れるために新しく作成したディレクトリです。メイクファイルでパターンルールを拡張するには?

$TESTDIRは、file1.cppfile2.cppを含むディレクトリです。

コンパイルするには*.cpp別のディレクトリにあるもう1つのcppファイルが必要です($SRCDIR)。だから、私に与え、私は唯一の

$(TESTOBJDIR)% : $(TESTDIR)%.cpp 
    $(CC) $< -o [email protected] 

を行うことができ、以下の規則によって:

g++ file1.cpp -o file1 
g++ file2.cpp -o file2 

しかし、私は

g++ dir/need1.cpp file1.cpp -o file1 
g++ dir/need2.cpp file2.cpp -o file2 

だった望んでいたことが可能になるパターンルール内の方法はあります上記の方法でdirの.cppファイルを含めるようにしてください。

答えて

2

あなたの目標に見られるパターンは、file<x>dir/need<x> .cppとfile<x>.cppに依存しています。

以下のパターンルールが有効です。

(TESTOBJDIR)file% : (TESTDIR)file%.cpp dir/need%.cpp 
    $(CC) $^ -o [email protected] 
+0

これを行うと、今は(g ++ ..)も呼び出されません。/ – pokche

+0

@pokche、私はあなたのコンピュータの問題を診断できません。私は私の上でそれをテストし、それは動作します。 –

+0

@R Sahu dir/need1.cppを実行することによってハードコードを作成すると、それは機能しますが、%パターンを配置すると作業が停止します。他のオンラインリソースがありますか?オンラインで検索しましたが、 – pokche

関連する問題