Existe alguma possibilidade de usar o mesmo Makefile no CentOS e no FreeBSD?

0

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:)

    
por Sergius 18.09.2018 / 17:07

1 resposta

1

Você pode ser capaz de fazer:

PYTHON != which python2.7 || which python

Isso funciona no gnu make 4.1 e no bmake 20160220-2 + b1

Mas por que se incomodar? É francamente provavelmente menos problemático instalar o gnu make e usá-lo, ou escrever um script de configuração que gere o Makefile para você com o PYTHON corretamente definido.

    
por 18.09.2018 / 17:40