Makefile GNU生成模式规则问题
我试图使用GNUMake的模式规则从一个满是头的目录中自动生成预编译头。然而,尽管这个用例很简单,我还是会遇到一些错误Makefile GNU生成模式规则问题,makefile,gnu-make,Makefile,Gnu Make,我试图使用GNUMake的模式规则从一个满是头的目录中自动生成预编译头。然而,尽管这个用例很简单,我还是会遇到一些错误 HEADERS=$(patsubst %.h,%.h.gch,$(wildcard *.h)) CXX=g++ WARNINGS=-Wno-unused-result -Wall WARNINGSH=-w CFLAGS=-c -g -flto=8 -fuse-linker-plugin -Ofast -std=c++11 -pthread $(WARNINGS) HFLAGS=
HEADERS=$(patsubst %.h,%.h.gch,$(wildcard *.h))
CXX=g++
WARNINGS=-Wno-unused-result -Wall
WARNINGSH=-w
CFLAGS=-c -g -flto=8 -fuse-linker-plugin -Ofast -std=c++11 -pthread $(WARNINGS)
HFLAGS= $(CFLAGS) $(WARNINGSH)
all: $(HEADERS)
debug: CFLAGS=-c -g3 -ggdb -O0 -std=c++11 -pthread -DSTACK_TRACE $(WARNINGS) \
-D_GNU_SOURCE
debug: HFLAGS=$(CFLAGS) $(WARNINGSH)
debug: clean all
%.h.ghc : %.h
$(CXX) $(HFLAGS) $<
clean:
rm -f *.gch
我在这里遗漏了什么?问题是:
%.h.gch : %.h
^^
$(CXX) $(HFLAGS) $<
%.h.gch:%.h
^^
$(CXX)$(HFLAGS)$<
您能澄清一下吗?我正在尝试构建预编译头,它的形式明确为header\u name.h.gch
。你是说模式包含多个句点或其他东西是非法的吗?哦,现在我注意到了。真尴尬。不知怎的,当我试图手动写出这个扩展名时,我总是使用GHC编译器之类的东西:/。谢谢你指出这一点。
%.h.gch : %.h
^^
$(CXX) $(HFLAGS) $<