我正在学习这个教程,其中有类似于这样的内容
# File names
EXEC = run
SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
.....
%.o: $(SRCPATH)/%.cpp $(INC)
$(CC) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
我不确定是否理解该文件,希望有人能解释最后两个语句。以下是我关于Makefile的三个问题:
问题1:
什么是
SOURCES = $(wildcard *.cpp)
并且
SOURCES = $(*.cpp)
它说第二种情况只有当存在.cpp文件时才起作用,因为它们不存在,所以它不起作用。我的问题是为什么第一种方法有效?
问题2: 通配符*表示什么? 最后一个语句OBJECTS = $(SOURCES:.cpp=.o)表示什么?
问题3: 在作为目标时,%.o表示什么?* .o,%.o和通配符* .cpp之间有什么区别?
*.cpp
而不是$(*.cpp)
。$(*.cpp)
是错误的。此外,该页面关于*.cpp
的说法也是不正确的。 - Etan Reisner