0

我目前正在使用 flex 和 bison 开发一个简单的编译器。文件夹结构:MainFolder --> src --> Compiler,其中包含以下文件 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.

我很感激这方面的任何帮助我还需要进行构建,以便这些程序与用 Java 编写的 Executor 一起运行,有人可以就我如何完成这项工作提出一些建议吗?

4

2 回答 2

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
于 2012-04-25T06:41:21.507 回答
0

您正在讲述make一个文件src/dplc/bison.y,但您声称您的目录结构是MainFolder --> src --> Compiler. 那不应该src/Compiler/bison.y吗?

于 2012-04-23T02:21:02.417 回答