在 Makefile.am 中调用 SED 获取源

2024-04-09

我有 C++ 代码,需要在编译之前对其进行 sed 处理。我如何将其放入Makefile.am?

我尝试了典型的 makefile 设置,目标似乎不存在:

gentest.cc:

$(SED) -i "s|FIND|REPLACE|" gentest.cc

如果您对我为什么要这样做感兴趣,那是因为我编写了我的程序(slider3.py)用 python 写,我的伙伴用 c++ 写了他的(gentest.cc)并且他的需要打电话给我。我通过编辑来完成此任务argv然后使用execv().

... {

char **argv2 = new char*[argc];

memset(argv2,0,sizeof(argv2));

argv2[0] = "__PREFIX__/bin/slider3.py";

memcpy(argv2 + 1, argv + 2, sizeof(char *) * (argc - 2));

int oranges = execv(argv2[0], argv2);

printf("%s\n", strerror(oranges));

return oranges;

} ...

我已经处理过获取#!添加到slider3.py and chmod +x通过使用不适用于的方法gentest.cc。我也处理过添加slider3.py到已安装的文件列表。

EXTRA_DIST=testite.sh slider3_base.py

bin_SCRIPTS = slider3.py

CLEANFILES = $(bin_SCRIPTS)

slider3.py: slider3_base.py

rm -f slider3.py

echo "#! " $(PYTHON) > slider3.py

cat slider3_base.py >> slider3.py

chmod +x slider3.py

gentest是这样定义的Makefile.am:

bin_PROGRAMS = gentest

gentest_SOURCES = gentest.cc

gentest_LDADD = libgen.a #../libsbsat.la $(LIBM)

并且在 make 期间无法运行(请注意@模式已成功扩展Makefile):

gentest.cc:

$(SED) -i "s|__PREFIX__|@prefix@|" gentest.cc

关于如何获得的任何想法sed编译前运行gentest.cc?


不要使用就地 sed。

Instead:

gentest_SOURCES = gentest-seded.cc

gentest-seded.cc : gentest.cc
    $(SED) "s|__PREFIX__|@prefix@|" $< >$@
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Makefile.am 中调用 SED 获取源 的相关文章

  • UNIX:用冒号替换换行符,在 EOF 之前保留换行符

    我有一个格式为的文本文件 INPUT txt A
  • 如何在 sed 命令中使用变量

    我有一个名为 text file1 txt 的文件 文件中的内容是 主题 C US O AAA OU QA OU 12345 OU TESTAPP 现在我想要实现的是如下内容 主题 C US O AAA QA 12345 TESTAPP 当
  • SED 或 AWK 将所有内容替换为另一个文件中的模式

    我正在尝试使用 SED 脚本进行模式替换 但它无法正常工作 样本内容 txt 288Y2RZDBPX1000000001dhana JP2F64EI1000000002d EU9V3IXI1000000003dfg1000000001dfd
  • 正则表达式用 SED/AWK 替换特定列

    我的数据如下所示 制表符分隔 Organ K ClustNo Analysis LN K200 C12 Gene Ontology LN K200 C116 Gene Ontology CN K200 C2 Gene Ontology 我想
  • sed:每N行后插入一个字符串

    我想在大文件中每 30 行后插入一个字符串 我使用的是 mini sed 它不支持 波形符 范围运算符 我正在寻找仅限 sed 的解决方案 该线程是如何使事情变得过于复杂的另一个例子 这应该可以做到 sed 0 30 s string g
  • sed 替换文字 TAB

    我想更换TABs in stdout带分号 通过运行sed来自 ZSH shell 我知道通常可以 在其他 shell 中 使用 somecommand sed s t g 然而 这在 FreeBSD 下的 ZSH shell 中对我不起作
  • 如何从 Linux 和 Solaris 上的挂载中提取 NFS 信息?

    我需要使用提取 NFS 挂载信息mount在 Linux RHEL 4 5 和 Solaris Solaris 10 系统上 由于这是 SSH 命令的一部分 因此提取需要在一行中进行 不幸的是 Linux 和 Solaris 在该行的不同部
  • sed - 打印仅以元音开头的单词

    如何反转此 sed 以仅打印以元音开头的单词 我试过放进去 在下面的 sed 命令中 但它不起作用 我认为这只会颠倒上面的规则 echo Always take a Big Apple sed r s b AEIOUaeiou w g 你需
  • 使用 sed 和 pstree 显示正在使用的终端类型

    我一直在尝试仅显示用作名称的终端类型 例如 如果我使用 konsole 它会显示 konsole 到目前为止我一直在使用这个命令 pstree A s 输出这个 systemd konsole bash pstree 我有以下内容可以从该行
  • 使用 libtool 和 gdb

    我正在开发一个使用 GNU 自动工具的项目 因此为了使用 gdb 调试代码 我从 libtool 中运行 gdb libtool mode execute gdbtui foobar 是否可以重新加载项目的修改版本 而不必退出 gdb li
  • 如何在文件中固定数量的字符后插入换行符

    我正在寻找一个 bash 或 sed 脚本 最好是单行脚本 用它可以在巨大的文本文件中的固定数量的字符之后插入一个新行字符 像这样的事情怎么样 Change 20 是换行符之前的字符数 temp text 是要替换的文件 sed e s 2
  • 如何在 awk 或 sed 中编写查找所有函数(使用正则表达式)

    我有运行 python 的 bash 函数 它从标准输入返回所有找到的正则表达式 function find all python c import re import sys print n join re findall 1 sys s
  • 通过相同的 Makefile 生成 Makefile 的包含文件

    在我的程序中 我有一个有点复杂的构建过程 目前 在我使用的一个目录中include in Makefile am对于一个文件 该文件不存在 但必须自行构建 原因是这个包含文件相当长 此外 在实际程序中 它不仅仅是一个文件 而是多个文件 并且
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • sed 合并由空行分隔的 N 个文本行?

    我搜索了一下 但没有找到针对这种特定情况的解决方案 给定一个输出任意数量的非空行组的管道 这些非空行组分隔成单个空行 是否有一个 sed 单行代码 或 awk 单行代码或 perl 单行代码 将非空行组组合成单行 同时保留空白行 例如 输入
  • 仅当重复行与模式匹配时才删除它们

    这个问题 https stackoverflow com questions 1444406 how can i delete duplicate lines in a file in unix有一个很好的答案说你可以使用awk seen
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • 当找到匹配时使用 sed 替换行首

    我有一个 Java 文件 我想注释包含匹配的任何代码行 myvar 我认为 sed 应该在这里帮助我 sed s myVar not sure what to put here g MyFile java 我不知道要输入什么 not sur
  • 用于计算数据文件中数字列表的平均值的脚本

    文件data txt包含以下内容 1 00 1 23 54 4 213 2 3 4 脚本的输出应该是 ave 54 646 一些简单的脚本是首选 这是一种方法 awk s 1 END print ave s NR RS file ave 5
  • sed/awk/bash 用外部文件内容替换两个字符串之间的文本

    我正在编写一个脚本 命令 它将采用 inputFile1 在其中查找特定的开始和结束字符串 并替换它们之间的所有文本 包含 inputFile2 的完整内容 理想情况下 但不是强制性的 这应该不需要转义特殊字符即可工作 因此我可以将字符串放

随机推荐