Eu acho que você deveria usar variáveis. Por exemplo:
DESTDIR?=/usr/local/lib
...
install:
mv libsgtk.so ${DESTDIR}
Nesse caso, o usuário pode sobrescrever o valor padrão com make DESTDIR=/usr/lib
(observe o ?
acima).
Se você quiser, pode testá-lo. Talvez não seja uma má ideia. O método mais simples é usar mv -n
(ou mv -nv
) em vez de mv
: não sobrescreve o arquivo existente. Sua principal desvantagem é que o valor de retorno de mv
é zero, então o make
não saberá que o movimento não foi sucesso.
Mas se você usar cp
(copy) em vez de mv
, será bom: o cp -n
é return 1 (diferente de zero) quando o arquivo de destino existe. Então a solução (teste incluso):
install:
cp -n libsgtk.so ${DESTDIR}
Apenas uma pergunta útil: você sabe sobre PHONY
targets em Makefile
? Você deve usá-lo para install
e clean
targets (observação: você deve excluir libsgtk.so
também em clean
).