Infelizmente, em alguns ambientes antigos do FreeBSD eu não posso usar o "gmake", então eu preciso escrever um Makefile que funcionará com o FreeBSD make também.
E o último problema que não consigo resolver - use comandos shell, por exemplo, eu preciso obter o caminho completo para o executável Python:
PYTHON := $(shell which python2.7 || which python)
Mas o FreeBSD simplesmente ignora isso.
test:
echo == $(PYTHON) ==
Então eu corro fazer teste:
$ make test
echo == ==
== ==
Alguém pode ajudar, por favor?
Atualização # 1: Para quem não sabe ler de perto e acidentalmente faz a pergunta:
Script de teste completo:
PYTHON != which python2.7 || which python
test:
$(PYTHON) -c 'print "hello world"'
Execute no FreeBSD:
make
/usr/bin/python -c 'print "hello world"'
hello world
Executar no CentOS:
make
test_make:1: *** missing separator. Stop.
E se eu usar o comando $ (shell ...), ele funciona no CentOS e não funciona no FreeBSD. Então, existe alguma solução sem o gmake?
Atualização # 2: Eventualmente eu encontrei a solução (coloque o comando nos backticks):
PYTHON ?= 'which python2.7 || which python'
Não sei porque é que se imprime:
make
'which python2.7 || which python' -c 'print "hello world"'
hello world
Mas funciona! Você pode usá-lo, pessoal:)