在我的makefile中,我想做这样的事情:
all: foo bar python
python:
if /usr/bin/someprogram
do some stuff
else
echo "not doing some stuff, coz someprogram ain't there"
endif
实现这一目标的最简单方法是什么?
一个简单的方法是使用test
:
python:
@test -s /usr/bin/someprogram && echo "someprogram exists" || echo "someprogram does not exist"
@test -s /bin/ls && echo "ls exists" || echo "ls does not exist"
正如@MadScientist 所说,你可能需要一个 if 语句,以防你想做多件事:
python:
if [ -s /bin/ls ]; then \
echo "ls exists"; \
fi;
您可以使用 'if' 和 'shell' make 函数:
all: foo bar python
CMD=/some/missing/command
foo:
echo "foo"
bar:
echo "bar"
python:
$(if $(shell $(CMD) 2>/dev/null), \
echo "yes", \
echo "no")
这与“不”相呼应。如果您将 CMD 更改为 /bin/ls,它会回显“是”。