下面的makefile没有创建对象的目标,但make仍在形成规则并生成对象并生成最终的all.exe。我不确定如何运作。如果make文件中的依赖项不可用,make是否具有创建规则的机制?
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
文件夹结构:
答案 0 :(得分:1)
是的,GNU make具有一整套的内置规则。
请参见手册:https://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html