如何在makefile中扩展模式规则?

时间:2016-10-19 05:19:19

标签: c++ makefile

让我们说$TESTOBJDIR是我刚创建的目录,用于放置我将要创建的二进制文件。

$TESTDIR是包含file1.cppfile2.cpp的目录。

要编译*.cpp我需要另一个位于不同目录的cpp文件,我们可以将其称为$SRCDIR。所以按照以下规则我只能做

$(TESTOBJDIR)% : $(TESTDIR)%.cpp
    $(CC) $< -o $@ 

给了我:

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文件。

1 个答案:

答案 0 :(得分:2)

我在您的目标中看到的模式是file<x>取决于dir/need<x>。cpp和file<x>.cpp

以下模式规则应该有效。

(TESTOBJDIR)file% : (TESTDIR)file%.cpp dir/need%.cpp
    $(CC) $^ -o $@