如何在makefile中创建目标来调用makefile中的另一个目标

时间:2012-11-12 02:43:41

标签: c++ unix ubuntu makefile

所以我有这个makefile,我希望目标只是为了调用目标expertest,但显然我正在做的方式是错误的,因为我收到了错误 “make:exprtest:找不到命令 make: * [all]错误127 “ 这是makefile:

all:
    exprtest
exprtest: exptrtest.o driver.o parser.tab.o scanner.o
    g++ -Wall -g -o exprtest exptrtest.o driver.o parser.tab.o scanner.o
driver.o: driver.cpp scanner.hpp driver.hpp
    g++ -Wall -g -c driver.cpp
parser.tab.o: parser.tab.hpp parser.tab.cpp
    bison parser.ypp
    g++ -Wall -g -c parser.tab.cpp
scanner.o: scanner.cpp scanner.hpp
    flex -t scanner.ll > scanner.cpp
    g++ -Wall -g -c scanner.cpp
clean:
    rm parser.tab.hpp parser.tab.cpp scanner.cpp

3 个答案:

答案 0 :(得分:12)

exprtest放在与all相同的行上。依赖关系在冒号之后,命令出现在以下行上,缩进。

target: dependencies
[tab] system command

所以在你的情况下,一切都变成了:

all: exprtest
exprtest: exptrtest.o driver.o parser.tab.o scanner.o
    g++ -Wall -g -o exprtest exptrtest.o driver.o parser.tab.o scanner.o

答案 1 :(得分:9)

您始终可以make拨打make的新实例 例如:

all:
    $(MAKE) exprtest

exprtest:  
    do exprtest stuff

键入make all将间接执行make exprtest

答案 2 :(得分:5)

您想要做类似

的事情
all: exprtest

说的是“all取决于exprtest成功”。