Makefile:如何使用命令输出作为目标名称?

时间:2011-01-29 01:18:36

标签: makefile

我有以下Makefile:

:PHONY Darwin Xcode Linux Cygwin

all: `uname`

Cygwin:
    echo "Making Cygwin"
    Scripts/Make/MakeCygwin.sh  

Linux:
    echo "Making Linux"
    Scripts/Make/MakeLinux.sh

Darwin:
    echo "Making Darwin"
    Scripts/Make/MakeDarwin.sh

Xcode:
    echo "Making Xcode"
    Scripts/Make/MakeXcode.sh

然而它不起作用:

$ make
make: *** No rule to make target ``uname`', needed by `all'.  Stop.

事实证明,uname命令未执行。有谁知道如何让它发挥作用?

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

UNAME=$(shell uname)

all: ${UNAME}

您可以在此处找到更多有用的功能:http://www.jfranken.de/homepages/johannes/vortraege/make_inhalt.en.html#ToC11

答案 1 :(得分:1)

GNU make的函数扩展允许你使用$(shell uname)。