14

所以我有这个makefile,我希望目标只是调用目标专家,但显然我这样做的方式是错误的,因为我收到错误“make:exprtest:Command not found make:* [all]错误 127” 这是生成文件:

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
4

3 回答 3

14

而且您总是可以make调用make.
例如:

all:
    $(MAKE) exprtest

exprtest:  
    do exprtest stuff

打字make all会间接做make exprtest

于 2012-11-12T03:08:02.983 回答
13

放在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
于 2012-11-12T02:45:45.983 回答
6

你想做类似的事情

all: exprtest

那就是“all取决于exprtest成功”。

于 2012-11-12T02:46:49.407 回答