3

autoconfとautomakeを使用する私のプロジェクトには、「foo」と「bar」という2つの実行可能ファイルがあります。「foo.c」が次のようになっているとします。

int main()
{
    exec ("bar");
    return 0;
}

つまり、「foo」は「bar」を使用します。これは、一度実行すると正常に機能します./configure && make && make install。ただし、autoconfにはプログラム名を変換するオプションがあります。たとえば、私はすることができます./configure --program-suffix=-2.0。次に、代わりに「foo」と「bar」がインストールされます。

/usr/bin/foo-2.0
/usr/bin/bar-2.0

その場合、「foo」内の「bar」への参照は正しくありません。これbarは、システムに存在しないためです(である必要がありますbar-2.0)。autoconf / automakeにこの参照を自動的に調整させる方法はありますか?

4

1 に答える 1

5

で、sedスクリプトをMakefile実行$(program_transform_name)して、最終的な名前のヘッダーファイルを作成できます。

たとえば、プログラム名がfooとであると仮定して、以下を含むファイルをbar作成します。names.h.in

#define FOO_NAME "@foo-name@"
#define BAR_NAME "@bar-name@"

次に、からMakefile.am生成するルールを持つように装備します。names.hnames.h.in

BUILT_SOURCES = names.h
EXTRA_DIST = names.h.in

edit = sed \
  -e 's/@foo-name@/'`echo foo | sed '$(program_transform_name)'`'/g;' \
  -e 's/@bar-name@/'`echo bar | sed '$(program_transform_name)'`'/g;'

names.h: $(srcdir)/names.h.in Makefile
        $(edit) < $(srcdir)/names.h.in > $@

そして最後に、ソースコードにとを含めnames.hて使用FOO_NAMEします。BAR_NAME

于 2012-10-02T09:10:22.520 に答える