0

由于我对 bash shell 脚本非常陌生,因此我无法理解用于编译某些程序的 Makefile。

你能解释一下下面源代码中'$@'和'$<'的含义吗?先感谢您。

CC=g++
CFLAGS=-c -Wall -I /usr/local/include/boost-1_37/ -g
LDFLAGS=-L /usr/local/lib
SOURCES=cluster.cpp test.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=k-means

all: $(SOURCES) $(EXECUTABLE)


$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o **$@**

.cpp.o:
    $(CC) $(CFLAGS) **$<** -o **$@**

clean:
    rm -fr *.o *~ $(EXECUTABLE)
4

2 回答 2

2

请参阅GNU make 手册中的自动变量:

$@

规则目标的文件名。如果目标是存档成员,$@则为存档文件的名称。在具有多个目标的模式规则中(请参阅模式规则简介),$@是导致规则配方运行的目标的名称。

$<

第一个先决条件的名称。如果目标从隐式规则中获得其配方,这将是隐式规则添加的第一个先决条件(请参阅隐式规则)。

于 2013-01-21T16:01:08.953 回答
0

一本适合这类事情的好书是:http ://www.amazon.co.uk/21st-Century-Tips-New-School/dp/1449327141

于 2013-01-21T16:21:43.160 回答