我有 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
?