2

フレックスとバイソンのソースファイルを含むCプロジェクトがあります。フレックスファイル#には、bisonで生成されたtab.hファイルが含まれます。

そこで、configure.acファイルにAC_PROG_LEXとAC_PROG_YACCを追加しました。しかし、autotoolsを実行してプロジェクトを作成しようとすると、 bisonが実行される前にflexで生成された.cファイルがコンパイルされ、flex.cファイルに含まれるtab.hファイルが生成されます。したがって、コンパイルは失敗します。

私はautotools(そしてstackoverflow!)の初心者です-autotoolsにbison.tab.hへのflex.oの依存関係を認識させる必要がありますか?もしそうなら、その依存関係はどこに行きますか?プロジェクトのSOURCESリストを含むMakefile.amで?

TIAジョン

4

2 に答える 2

2

ヘッダー ファイルがすでに提供されているのではなく、ビルドされることを automake に伝える必要があります。これを Makefile.am に入れます:

BUILT_SOURCES = tab.h
于 2013-03-13T23:32:15.790 に答える
0

私の経験では、パーサーとスキャナーで同じプレフィックスを使用することはできません。

あれは、

bin_PROGRAM = baz
AM_YFLAGS = -d
BUILT_SOURCES = foo.h
baz_SOURCES = main.c foo.l foo.y

動作しませんが、

bin_PROGRAM = baz
AM_YFLAGS = -d
BUILT_SOURCES = bar.h
baz_SOURCES = main.c foo.l bar.y

の前にautomakeビルドを保証します。bar.yfoo.l

したがって、スキャナーとパーサーが異なるファイル名を使用していることを確認してください。

于 2018-12-25T08:40:14.383 に答える