Estou aprendendo C ++, embora eu tenha agora uma pergunta geral, ou seja, não para programadores, mas IMHO é a melhor opção para usuários de Linux.
Eu quero o:
make
comando para sempre construir um novo binário, o que poderia ser feito facilmente criando um alias de Bash, algo como:
alias make='\make clean && \make'
Eu gostaria de não estar definindo que alias
, isso pode ser alcançado no lado do Makefile
?
O mais simples Makefile
, eu poderia sugerir, segue:
PROGRAM=project
CXXFLAGS=-std=c++17 -Wall -Wextra -Werror -Wpedantic -pedantic-errors
OPTIMIZATION=-O2
.PHONY: build
.PHONY: clean
.PHONY: distrib
build: ${PROGRAM}
clean:
rm ${PROGRAM}
distrib:
tar -czf ${PROGRAM}.tar.gz ${PROGRAM}.cpp Makefile
${PROGRAM}:
g++ ${PROGRAM}.cpp ${CXXFLAGS} ${OPTIMIZATION} -o ${PROGRAM}
Agora, nesse estado, diz:
make: Nothing to be done for 'build'.
Essencialmente, ele provavelmente vê o registro de data e hora recente e não cria, eu acho.
EDIT1:
Eu só vou acrescentar que este problema não é relacionado a Tab , ele é normal quando o binário não está no lugar.
EDIT2:
Depois de fazer modificações de acordo com a resposta de Sato Katsura:
O Makefile
tem esta aparência:
link
(Eu fiz o upload, porque as guias não podem ser exibidas no texto)
e ainda diz como as informações acima:
make: Nothing to be done for 'build'.
EDIT3:
$ make --version
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.