让我们说$TESTOBJDIR
是我刚创建的目录,用于放置我将要创建的二进制文件。
$TESTDIR
是包含file1.cpp
和file2.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文件。
答案 0 :(得分:2)
我在您的目标中看到的模式是file<x>
取决于dir/need<x>
。cpp和file<x>.cpp
。
以下模式规则应该有效。
(TESTOBJDIR)file% : (TESTDIR)file%.cpp dir/need%.cpp
$(CC) $^ -o $@