Gcc 如果依赖项不可用,是否为它们创建规则?

Gcc 如果依赖项不可用,是否为它们创建规则?,gcc,makefile,Gcc,Makefile,下面的makefile没有生成对象的目标,但make仍在形成规则,生成对象并生成最终的all.exe。我不知道它是怎么工作的。make是否具有创建规则的机制(如果规则在依赖项的makefile中不可用) SOURCE=$(wildcard Source/\*.cpp) TEST=$(wildcard Source/Tests/\*.cpp) OBJECTS=$(SOURCE:.cpp=.o) $(TEST:.cpp=.o) CXXFLAGS= -O3 -fstack-usage -MMD al

下面的makefile没有生成对象的目标,但make仍在形成规则,生成对象并生成最终的all.exe。我不知道它是怎么工作的。make是否具有创建规则的机制(如果规则在依赖项的makefile中不可用)

SOURCE=$(wildcard Source/\*.cpp)
TEST=$(wildcard Source/Tests/\*.cpp)
OBJECTS=$(SOURCE:.cpp=.o) $(TEST:.cpp=.o)
CXXFLAGS= -O3 -fstack-usage -MMD

all:$(OBJECTS)
    g++ $(CXXFLAGS) -o $@ $(OBJECTS)

print::
    @echo $(SOURCE)
    @echo $(OBJECTS)
    @echo $(TEST)

clean:
    rm -rf Source/*.o Source/Tests/*.o *.exe
控制台输出:

$ make
g++ -O3 -fstack-usage -MMD   -c -o Source/main.o Source/main.cpp
g++ -O3 -fstack-usage -MMD   -c -o Source/Tests/TestList.o Source/Tests/TestList.cpp
g++ -O3 -fstack-usage -MMD   -c -o Source/Tests/TestLinkedlist.o Source/Tests/TestLinkedlist.cpp
g++ -O3 -fstack-usage -MMD -o all Source/main.o Source/Tests/TestList.o Source/Tests/TestLinkedlist.o
文件夹结构:


是的,GNU make有一整套内置规则


查看手册:

Make确实有一些。感谢@MadScientist这是一个帮助。您还可以运行
Make-p-f/dev/null
查看内置规则和变量的完整数据库:手册没有涵盖所有规则和变量。