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

C++ 如何在makefile中扩展模式规则?,c++,makefile,C++,Makefile,比如说,$TESTOBJDIR是我刚创建的一个目录,用来存放我将要创建的二进制文件 $TESTDIR是一个包含file1.cpp和file2.cpp的目录 要编译*.cpp我需要另一个驻留在不同目录中的cpp文件,让我们称之为$SRCDIR。所以按照下面的规则,我只能 $(TESTOBJDIR)% : $(TESTDIR)%.cpp $(CC) $< -o $@ 但我想要的是 g++ dir/need1.cpp file1.cpp -o file1 g++ dir/need2

比如说,
$TESTOBJDIR
是我刚创建的一个目录,用来存放我将要创建的二进制文件

$TESTDIR
是一个包含
file1.cpp
file2.cpp
的目录

要编译
*.cpp
我需要另一个驻留在不同目录中的cpp文件,让我们称之为
$SRCDIR
。所以按照下面的规则,我只能

$(TESTOBJDIR)% : $(TESTDIR)%.cpp
    $(CC) $< -o $@ 
但我想要的是

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

在模式规则中是否有一种方法允许我以上述方式包含dir的.cpp文件

我在您的目标中看到的模式是
文件
取决于
目录/需求
.cpp和
文件.cpp

下面的模式规则应该有效

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

当我这样做时,配方现在(g++…)甚至没有被称为:/@pocke,我无法在你的计算机上诊断问题。我在我的电脑上测试了它,它运行得很好。@R Sahu当我通过dir/need1.cpp硬编码时,它运行得很好,但当我将%置于模式时,它就停止工作了。。您是否有任何其他在线资源可以指向它的工作地点。。因为我在网上搜索,找不到任何关于this@pokche真奇怪。我不知道有什么在线资源可以尝试GNU make。@Pocke,除非你有超过5个这样的目标,否则我不会再担心如何使用模式规则使它工作。只要根据需要在尽可能多的规则中添加所有依赖项,就可以开始有趣的事情——编写代码并看到它工作。
(TESTOBJDIR)file% : (TESTDIR)file%.cpp dir/need%.cpp
    $(CC) $^ -o $@