Bison 带有野牛和flex源的自动工具
我有一个C项目,其中包括一个flex和一个bison源文件;flex文件#包括bison生成的tab.h文件 因此,我在configure.AC文件中添加了AC_PROG_LEX和AC_PROG_YACC。但在我运行autotools并尝试创建项目之后,flex生成的.c文件将在bison运行以生成flex.c文件包含的tab.h文件之前进行编译。因此,编译失败 我是一个非常熟悉autotools(和stackoverflow!)的新手——我需要让autotools意识到flex.o对bison.tab.h的依赖性吗?如果是这样的话,该依赖关系会去哪里?在包含项目源列表的Makefile.am中 短暂性脑缺血发作Bison 带有野牛和flex源的自动工具,bison,autotools,flex-lexer,Bison,Autotools,Flex Lexer,我有一个C项目,其中包括一个flex和一个bison源文件;flex文件#包括bison生成的tab.h文件 因此,我在configure.AC文件中添加了AC_PROG_LEX和AC_PROG_YACC。但在我运行autotools并尝试创建项目之后,flex生成的.c文件将在bison运行以生成flex.c文件包含的tab.h文件之前进行编译。因此,编译失败 我是一个非常熟悉autotools(和stackoverflow!)的新手——我需要让autotools意识到flex.o对bison
John您需要告诉automake头文件将由您生成,而不是由您提供。将其放入Makefile.am中:
BUILT_SOURCES = tab.h
根据我的经验,解析器和扫描程序不能使用相同的前缀 就是
bin_PROGRAM = baz
AM_YFLAGS = -d
BUILT_SOURCES = foo.h
baz_SOURCES = main.c foo.l foo.y
不起作用,但是
bin_PROGRAM = baz
AM_YFLAGS = -d
BUILT_SOURCES = bar.h
baz_SOURCES = main.c foo.l bar.y
将在foo.l
之前为automake
构建bar.y
投保
因此,请确保您的扫描仪和解析器使用不同的文件名,这样您就可以开始了。您是否遵循了这些步骤?如果你想得到任何有用的帮助,你需要发布
Makefile.am
的相关部分。不,恐怕我没有发现。我还没有消化它,但希望它能提供答案;非常感谢。我也有同样的问题。这个答案并没有说明如何确保野牛必须在flex之前被处决。在我的Makefile.am
文件中,我有一条规则:pgfs\u cmplr\u SOURCES=src/lab/pgfs\u cmplr.y src/lab/pgfs\u cmplr.l
和builded\u SOURCES=src/lab/pgfs\u cmplr.h
但它不生成任何*.tab.h
文件,这是pgfs\u cmplr.l
所要求的,因为它包含了.h
。我尝试过很多名字,比如:y.tab.h
,pgfs\u cpmlr.tab.h
,pgfs\u cpmlr.h
,等等,我也尝试过手动编译(从自动工具中编译)并在那里工作,所以我们可以知道*.y
和*.l
都是正常的,这是自动工具配置问题