我正在学习GNU makefile.我看到了这个页面:http://mrbook.org/blog/tutorials/make/
在本文的最后,我发现了这个:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释OBJECT变量中的内容以及目标的.cpp.o:含义(也在$<其中)?
当我使用类似的东西时我也发现:
SRC = $(wildcard $(SRC_DIR)*.c)
SRC_OBJS = $(patsubst %.c, %.o, $(SRC))
Run Code Online (Sandbox Code Playgroud)
并使用"$(SRC_OBJS)"作为目标,它将为每个所需对象编译所有对象.这不会发生在第一个.有什么不同?
这是一个后缀规则通知make如何将file.cpp变成file.o一个任意的file.
$<是一个引用源文件的自动变量,file.cpp在后缀规则的情况下.
$@是引用目标文件的自动变量file.o.
| 归档时间: |
|
| 查看次数: |
6243 次 |
| 最近记录: |