gpt4 book ai didi

c++ - Automake Yacc 输出文件名困境

转载 作者:太空狗 更新时间:2023-10-29 21:07:21 25 4
gpt4 key购买 nike

问题:

我有一个项目要从 Solaris/Lex/Yacc 移植到 Linux/Flex/Bison + Autotools。我遇到了以下问题,我想知道是否有人知道如何解决它。给定一个这样的目标(只包括必要的细节):

bin_PROGRAMS=my_prog

my_prog_YFLAGS=-d
my_prog_SOURCES=\
main.cpp \
parser.ypp \
scanner.lpp

Automake 正在从 lpp 和 ypp 生成以下源文件:

  • scanner.lpp -> scanner.cpp(根据 Automake 手册)
  • parser.ypp -> my_prog-parser.cpp 和 my_prog-parser.h(为什么?)

尝试的解决方案:

使用 bison 的 -b 和 -o 选项来改变输出文件名。问题在于 automake 似乎采用默认输出名称 (parser.tab.c) 并使用脚本移动 文件。如果我用 bison 更改输出文件名,当 automake 尝试重命名不存在的文件时构建失败。

是否有一些选项或我缺少的东西?

最佳答案

解决方案:

因此,我实际阅读了 automake 源代码本身(出于好奇,请查看 handle_single_transform 函数)。如果为给定的源类型指定了每个目标选项,automake 会自动将项目名称添加到任何生成的文件中。

因此,改变:

my_prog_YFLAGS=-d

AM_YFLAGS=-d

使 automake 正确生成导致 parser.ypp 生成的规则:

  • 解析器.cpp
  • 解析器.h

关于c++ - Automake Yacc 输出文件名困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com