如何从Makefile中的另一个规则调用包含“%”的规则? 我有下面的MaFaFlash文件来编译我的C++项目。 obj/%.o: src/%.cpp $(CXX) $(CFLAGS) -c $< -o $@
作品,因为它只是链接,而不是编译,正如我所期望的那样 这也不是:如何从Makefile中的另一个规则调用包含“%”的规则? 我有下面的MaFaFlash文件来编译我的C++项目。 obj/%.o: src/%.cpp $(CXX) $(CFLAGS) -c $< -o $@,makefile,wildcard,Makefile,Wildcard,作品,因为它只是链接,而不是编译,正如我所期望的那样 这也不是: build/main: obj/%.o $(CXX) $^ -o $@ 错误如下: 没有规则使“build/main”需要目标“obj/%.o”。停下来 即使它是必需的。build/main:$(通配符obj/*.o)也不起作用,因为通配符将在第一次读取规则时展开(在生成.o之前,在它们存在于文件系统之前,所以它将展开为空)。build/main:$(通配符obj/*.o)不起作用,因为在第一次读取规则时(在生成.o之前
build/main: obj/%.o
$(CXX) $^ -o $@
错误如下:
没有规则使“build/main”需要目标“obj/%.o”。停下来
即使它是必需的。build/main:$(通配符obj/*.o)也不起作用,因为通配符将在第一次读取规则时展开(在生成.o之前,在它们存在于文件系统之前,所以它将展开为空)。
build/main:$(通配符obj/*.o)
不起作用,因为在第一次读取规则时(在生成.o之前,以及在文件系统上存在之前,通配符将展开,所以它将展开为空)。源代码是否展开为src/main.cpp src/other.cpp
或main.cpp other.cpp
?@kim366:您可以自己查看:put$(它展开为的信息$(SOURCES))
作业后。是否将SOURCES
扩展到src/main.cpp src/other.cpp
或main.cpp other.cpp
?@kim366:您可以自己看到:在作业后放置$(信息扩展到$(SOURCES))
。
SOURCES := $(wildcard src/*.cpp)
OBJECTS := $(patsubst src/%.cpp, obj/%.o, $(SOURCES))
build/main: $(OBJECTS)
$(CXX) $^ -o $@
SOURCES := $(wildcard src/*.cpp)
OBJECTS := $(patsubst src/%.cpp, obj/%.o, $(SOURCES))
build/main: $(OBJECTS)
$(CXX) $^ -o $@