如何使用g++创建特定名称的目标文件

27
我正在制作Makefile,其中一个目标是exptrtest.o,如何使用g++创建一个带有该名称的对象文件?我的cpp文件名为exprtest.cpp而不是exptrtest.cpp。
exptrtest.o: exprtest.cpp
    g++ -Wall -g -c exprtest.cpp

为了更清晰明了,这是我的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
exptrtest.o: exprtest.cpp
    g++ -Wall -g -c exptrtest.o exprtest.cpp
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

我遇到了这个错误: "g++: error: exptrtest.o: No such file or directory make: * [exprtest] Error 1"

1
"g++ -c name.cpp" 会创建名为 name.o 的文件。使用 -o 标志可以创建不同的输出名称。 - Trevor Hickey
1个回答

47

在使用-c选项时,同时使用-o选项。

exptrtest.o: exprtest.cpp
    g++ -Wall -g -c exprtest.cpp -o exptrtest.o

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接