GNUmakefile无法编译bison和flex程序

时间:2012-04-21 19:32:11

标签: java c bison flex-lexer

我目前正致力于使用flex和bison的简单编译器。 文件夹结构: MainFolder - > src - >编译器有以下文件 add_inp.flex,bison.y main.c和stack.c 基本上当我单独运行时,它们编译正常并生成以下文件 flex生成lex.yy.c和bison生成add_inp.tab.c& add_inp.tab.h以下是我的GNUmake文件

     lex.yy.c: src/dplc/add_inp.flex bison.tab.c src/dplc/bison.tab.h
           flex src/dplc/add_inp.flex   

     bison.tab.c: src/dplc/bison.y 
           bison -d -t src/dplc/bison.y

     a.exe: src/dplc/main.c lex.yy.c bison.tab.c
            gcc src/dplc/main.c


    clean: 
      rm src/dplc/bison.tab.c src/dplc/bison.tab.h src/dplc/lex.yy.c src/dplc/a.exe

我收到此错误

make: *** No rule to make target `src/dplc/bison.y', needed by `bison.tab.c'.  Stop.

如果我没有单独编写flex和bison程序:

make: *** No rule to make target `src/dplc/bison.y', needed by `bison.tab.c'.  Stop.

我感谢任何有关这方面的帮助另外我还需要为这些程序做Build,以便用Java编写的Executor运行,有人可以提出一些关于如何完成这项工作的建议吗?

2 个答案:

答案 0 :(得分:1)

这就是我的工作方式,感谢所有人的帮助。

  CC=gcc
  IDIR =src/dplc/
  CFLAGS=-I$(IDIR)
  a.exe: src/dplc/main.c lex.yy.c bison.tab.c 
$(CC) src/dplc/main.c $(CFLAGS) -I.
    bison.tab.c: src/dplc/bison.y 
bison -d -t src/dplc/bison.y
    lex.yy.c: src/dplc/add_inp.flex bison.tab.c bison.tab.h 
flex src/dplc/add_inp.flex  

    clean: 
rm bison.tab.c bison.tab.h lex.yy.c a.exe

答案 1 :(得分:0)

您告诉make文件src/dplc/bison.y,但您声称您的目录结构为MainFolder --> src --> Compiler。那不应该是src/Compiler/bison.y吗?