2012-01-03 1 views
3

私は、非再帰的にコンパイルするいくつかのサブディレクトリを持つアプリケーションを持っています。このために、サブディレクトリのすべてのソースファイルをいくつかの変数に分けて、ソースの最終コレクションで使用します。このような何か:Makefile.amでパターンを置換する方法

GUI_SOURCEFILES = Gui/MainWindow.cc \ 
        Gui/StatusBar.cc 
... 
foo_SOURCES = $(GUI_SOURCEFILES) \ 
       $(DATABASE_SOURCEFILES) \ 
       main.cc 

は今、しかし、これはすべてのデータベース・ファイルの前にすべてのGUI、ソースファイルのためのGui/Db\を書くために私を強制します。私は、この接頭辞automaticallを作成することが可能でなければならないと思いますが、私はこれを正しく行う方法を見つけることができません。

GUI_SOURCEFILES = MainWindow.cc \ 
        StatusBar.cc 
... 
foo_SOURCES = $(GUI_SOURCEFILES) \ 
       $(patsubst %,Gui/%,$(DATABASE_SOURCEFILES)) \ 
       main.cc 

しかし、autotoolsのはまったくこのMakefile.amをコンパイルされません:私はいつものメイクの方法を試してみました。

autotoolsでこれを行う方法はありますか?

+0

'$(addprefix Gui /、$(DATABASE_SOURCEFILES)) 'についてはどうですか? –

+0

@dma_k:これは同じ問題があります: 'src/Makefile.am:12:addprefix Gui /、$(GUI_SOURCEFILES:非POSIX変数名' 'src/Makefile.am:12 :(おそらくGNU make拡張)' – LiKao

+1

@LiKao:サフィックスの置き換えのような伝統的なmakefile構造も動作しますしかし、私は*プレフィックス*メソッドについてはわかりません。 – thiton

答えて

3

ここでは方法がありません。すべてのファイル名はautomakeの時に利用可能でなければならず、それはmake-timeのような特定の機能を排除します。

+0

ファイル名は完全に利用可能です。私は毎回明示的にディレクトリプレフィックスを追加したくない。それだけです。私はこれのためにautotoolsと運がうまくいかないと思う。 – LiKao

+1

automakeは、* include(*と同じように)引数が定数でAM時刻に知られていれば* $(addprefix ...)*を展開できますが、現時点では実行しません。パッチを調理して、提出しようとすることができます "。 –

関連する問題