У меня есть код на С ++, которому перед компиляцией нужно выполнить sed. Как мне поместить это в Makefile.am
?
Я попробовал типичную настройку make-файла, и цель, кажется, не существует:
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
и 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
?