- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
问题:
我有一个项目要从 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 生成以下源文件:
尝试的解决方案:
使用 bison 的 -b 和 -o 选项来改变输出文件名。问题在于 automake 似乎采用默认输出名称 (parser.tab.c) 并使用脚本移动 文件。如果我用 bison 更改输出文件名,当 automake 尝试重命名不存在的文件时构建失败。
是否有一些选项或我缺少的东西?
最佳答案
解决方案:
因此,我实际阅读了 automake 源代码本身(出于好奇,请查看 handle_single_transform 函数)。如果为给定的源类型指定了每个目标选项,automake 会自动将项目名称添加到任何生成的文件中。
因此,改变:
my_prog_YFLAGS=-d
到
AM_YFLAGS=-d
使 automake 正确生成导致 parser.ypp 生成的规则:
关于c++ - Automake Yacc 输出文件名困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342790/
以下语句不起作用: dist_include_DATA = someheaders.h 导致错误: Makefile.am:8: `includedir' is not a legitimate di
在我的 Makefile.am文件我有这样的东西: bin_PROGRAMS = foo bar foo_SOURCES = foo.cpp bar_SOURCES = bar.cpp 我有兴趣拥有
假设我有一个这样的项目: (dev dir) - README - INSTALL / src - blah.cpp - blah.hpp / conf - blah_one.xml
想象一下由 autoconf 生成的以下目标和命令: .c.lo: $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
我想在安装二进制文件之前使用 automake 处理/修改它们。例如,我想将二进制文件中的符号提取到单独的文件和位置(如 this )。另一个示例是收集关键 Assets 的 md5sum 以发布报告
我遇到了一个 automake 的问题,我似乎找不到一个干净的解决方案,这似乎应该是可能的(甚至是简单的),但没有简单的工作。 基本上,我遇到的问题是源文件包含自动生成的头文件。我可以添加依赖项来生成
此主题的大部分内容都在 pkginclude_HEADERS 上的此主题中进行了介绍。 我有一个开源库,它有一些包含通用名称的内容。我怀疑最好的解决方案是将我的伞形包含文件放在 pkginclude_
假设我开发了 libfoo.a 作为我编译过程的中间步骤。这是 Makefile.am 中的一行: noinst_LIBRARIES = libfoo.a 这个库依赖于其他库。为了防止我收到 unde
操作系统: Ubuntu 14.14 automake 版本:automake (GNU automake) 1.14.1 我使用 automake 构建源代码以创建共享库。 但是我得到一个错误,au
我在 Rapbian (2014-09-09-wheezy-raspbian) 发行版上安装 automake 1.14.1 时遇到问题。我写了 sh ./configure 然后我写了 make 然
我对 GNU Make 非常有经验,但对 autotools 完全陌生。通过查看一些教程,我了解到 autotools 是一种标准化 makefile 目标并跨多个体系结构构建的方法。这是一件好事,因
我的 Makefile.am包括一个文件(带有各种定义的变量),例如: include make.config ... 问题是该文件又是由工具(即 config.generator.sh )基于某些输
我正在尝试编译和构建 automake 1.16,但它以下列方式失败: help2man: can't get `--help' info from automake-1.16 Try `--no-d
我正在尝试在 CentOS5 上构建 glib-2.36.4。我意识到升级到 6 会更明智,但由于客户要求,这是不可能的。 我已经开始构建,但出现以下错误。该错误提示系统上不存在 automake-1
在我的Makefile.am中,我进行了以下测试: TESTS += tests/test1 check_PROGRAMS += tests/test1 tests_test1_SOURCES = t
我正在尝试在 automake 中执行此操作 platform=$(uname) ifeq ($(platform), Darwin) stmt = ... else stmt1 =
我正在尝试在 automake 中执行此操作 platform=$(uname) ifeq ($(platform), Darwin) stmt = ... else stmt1 =
如何告诉 Automake 构建一个不需要安装的动态模块? pkglib_LTLIBRARIES = mywrapper.la mywrapper_la_LDFLAGS = -no-undefined
我刚刚建立了一个 cross-helloworld automake 项目(用于 stm32f4-discovery)。我有一个自定义 discovery.ld 脚本。我在我的 Makefile.am
我知道我可以使用 install-data-hook在复制我的数据文件后做任何我想做的事情,这样我就可以按照我想要的方式调整文件权限。 不过,我的问题在它之前。 有什么办法可以告诉我automake在
我是一名优秀的程序员,十分优秀!