0

在我的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

实现这一目标的最简单方法是什么?

4

2 回答 2

5

一个简单的方法是使用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;
于 2013-08-02T15:41:24.520 回答
2

您可以使用 '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,它会回显“是”。

于 2013-08-02T15:43:20.230 回答