簡體   English   中英

與野牛和Lex的Makefile

[英]Makefile with Bison and Lex

我正在使用bison和lex做一個簡單的解釋器。 這是我的make文件內容。

#
# makefile for ccalc
#
OBJS += mylang.o SM.o lex.o parse.o

# rules
%.c: %.y
    bison -o $(@:%.o=%.d) $<

%.c: %.l
    flex -o$(@:%.o=%.d) -i $<

# dependencies
mylang: mylang.yy.tab.c lex.c $(OBJS)
    @echo g++ -Os -std=c++0x -omylang $(OBJS)
    @g++ -Os -std=c++0x  -omylang $(OBJS)
    @echo ' '

# source
mylang.o: mylang.cpp

SM.o: SM.cpp SM.h

lex.o: lex.c

parse.o: mylang.yy.tab.c

mylang.yy.tab.c: mylang.yy

lex.c: mylang.ll

運行此make文件時,命令運行為

g++    -c -o SM.o SM.cpp

但我想以

g++ -Os -std=c++0x -c -o SM.o SM.cpp

我應該在make文件中進行哪些更改才能與c ++ 0x編譯器版本一起運行。

相應地設置CXXFLAGS標志:

CXXFLAGS="-Os -std=c++0"

make使用內部默認規則將c ++文件編譯為.o文件。 您可以使用make -p顯示它們。

您的規則是

COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cpp = $(COMPILE.cc)

%.o: %.cpp
    #  recipe to execute (built-in):
    $(COMPILE.cpp) $(OUTPUT_OPTION) $<

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM