残念ながら、以前のFreeBSD環境では「gmake」を使用できないため、FreeBSD makeでも機能するMakefileを作成する必要があります。私が解決できない最後の問題 - たとえば、シェルコマンドを使用してPython実行可能ファイルのフルパスを取得する必要があります。
PYTHON := $(shell which python2.7 || which python)
しかし、FreeBSD makeはこれを完全に無視します。
test:
echo == $(PYTHON) ==
その後、makeテストを実行します。
$ make test
echo == ==
== ==
誰でも助けることができますか?
アップデート#1:注意深く読むことができず、誤って質問に反対票を投げた人のために:
フルテストスクリプト:
PYTHON != which python2.7 || which python
test:
$(PYTHON) -c 'print "hello world"'
FreeBSDで実行:
make
/usr/bin/python -c 'print "hello world"'
hello world
CentOSで実行:
make
test_make:1: *** missing separator. Stop.
$(shell ...) コマンドは CentOS では動作しますが、FreeBSD では動作しません。それでは、gmakeを使わずに解決策はありますか?
アップデート#2:ついに解決策を見つけました(コマンドをバックティックの中に入れます)。
PYTHON ?= `which python2.7 || which python`
なぜそれ自体が印刷されるのかわかりません。
make
`which python2.7 || which python` -c 'print "hello world"'
hello world
しかし、動作します!使用してください :)
答え1
あなた可能可能:
PYTHON != which python2.7 || which python
これはgnu make 4.1とbmake 20160220-2 + b1で動作します。
ところで、なぜ面倒?正直なところ、gnu makeをインストールして使用するか、正しいPYTHON定義でMakefileを生成する構成スクリプトを作成する方が簡単です。