2012-11-12 2 views
12

sto facendo un makefile e uno degli obiettivi è exptrtest.o come si usa g ++ per creare un objectfile con quel nome, il nome del mio file cpp è exprtest.cpp non exptrtest.cpp?Come si usa g ++ per creare file oggetto con un nome specifico

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

per renderlo più chiaro, questo è il mio 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 

sto ottenendo l'errore: "g ++: Errore: exptrtest.o: No such file or directory marca: * [exprtest] errore 1"

+0

"g ++ -c name.cpp" creerà nome.o. Utilizzare il flag -o per creare un nome di output diverso. –

risposta

26

Utilizzare l'opzione -o in combinazione con -c.

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