flex
およびから生成されたファイルで自動依存関係生成を使用したいと思いますbison
。
今、私はこれをやっています:
CSRC=$(wildcard *.c)
OSRC=grammar.y scanner.l
OUTPUT_DIR="../bin"
SOLIDC_OBJS=solid_ast.o solid_strbuf.o solid_strlit.o solidc.o
SOLIDL_OBJS=solidl.o solid_ast.o solid_strbuf.o
CFLAGS += -MD -MP
CC=clang
BISON=bison
FLEX=flex
MKDIR=mkdir -p
all: solidc
solidc: setup $(SOLIDC_OBJS)
$(BISON) -vd grammar.y
$(FLEX) --header-file=scanner.yy.h -o scanner.yy.c scanner.l
$(CC) -o $(OUTPUT_DIR)/$@ $(SOLIDC_OBJS) scanner.yy.o grammar.tab.o
setup:
@$(MKDIR) $(OUTPUT_DIR)
run:
$(OUTPUT_DIR)/$(OUTPUT_NAME)
clean:
$(RM) $(wildcard $(OUTPUT_DIR)/*) $(wildcard *.o) $(wildcard *.d) \
$(wildcard scanner.yy.*) $(wildcard grammar.tab.*) \
$(wildcard grammar.output)
-include $(SRC:%.c=%.d) scanner.yy.d grammar.tab.d
しかし、これは機能しませんscanner.yy.d
。grammar.tab.d
生成される機会がないためです。
これを回避するための最良の方法は何ですか?
この質問は実際にはGNUmakeと同じではないことに注意してください 。生成されたヘッダーファイルを使用して自動依存関係を生成
-include
します。これは、他の多くのものに加えて、ではなく 「効率の低い」方法を使用しているためですsef
。