コンパイル前にsedを実行する必要があるC++コードがあります。これをどのように配置し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
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
か?