unix makefile error --nenhuma regra para tornar alvo

0

(Por favor, tenha paciência comigo como sou novo nisso) Eu estou trabalhando em um makefile para um programa simples e tem dois arquivos associados a ele: main.cpp e game.adt. De game.adt eu deveria dividi-lo em 2 partes para o cabeçalho e o código-fonte (guess.h e guess.cpp) usando o csplit. Eu tentei compilar o makefile assim:

HEADERS=guess.h

#Targets:

default: guessGame

guessGame: guess.o main.o

                g++ guess.o main.o -o guessGame

guess.o: guess.cpp $(HEADERS) 

                g++ -c guess.cpp -o guess.o

main.o: main.cpp $(HEADERS)

         g++ -c main.cpp -o main.o

clean:

       -rm -f guessGame *.o

No entanto, diz que "não há regra para o alvo guess.cpp necessário para guess.o." O mesmo vale para o arquivo de cabeçalho. Eu sei que é porque os arquivos 'guess.cpp' e 'guess.h' não existem, mas é porque eu deveria dividir o arquivo .adt para torná-lo em guess.cpp e guess.h. Como faço para criar uma regra para os alvos guess.cpp e guess.h usando o arquivo adt?

    
por CosmicCat 29.06.2018 / 19:36

1 resposta

0

Isso provavelmente pode ser melhorado. mas você deve começar:

guess.cpp guess.h : game.adt
        csplit -sz $< '/Split Here/'
        mv xx00 guess.h
        mv xx01 guess.cpp

Certifique-se de que as regras sejam recuadas com tabulações e não espaços.

    
por 29.06.2018 / 21:07

Tags