我有以下makefile片段來編譯我的C++項目。如何從Makefile中的另一條規則調用涉及`%`的規則?
obj/%.o: src/%.cpp
$(CXX) $(CFLAGS) -c $< -o [email protected]
現在我想鏈接.o
文件。但我希望能夠調用鏈接的規則名稱,如make build/main
,以編譯AND鏈接。
無論是這樣的:
build/main: $(wildcard obj/*.o)
$(CXX) $^ -o [email protected]
的作品,因爲它僅鏈接和無法編譯,就像我會通過this answer期待;
也不是這:
build/main: obj/%.o
$(CXX) $^ -o [email protected]
與錯誤:
No rule to make target 'obj/%.o', needed by 'build/main'. Stop.
即使它是必要的。
'build/main:$(wildcard obj/*。o)'不起作用,因爲通配符在第一次讀取時會擴展(在構建.o之前,存在於文件系統中,所以它會擴展爲空)。 – blackghost