2017-05-31 18 views
0

ファイルリストからmakefileの前提条件を読みたいと思っています。make前提条件のファイルリストを使用

ファイルリストは次のようなものになります。

/projects/abc/a.v 
/projects/abc/b.v 
/projects/abc/c.v 

をし、ファイルリストこのファイルリストはかなり長いです

source.flistと呼ばれ、私は単にのいずれかの前提条件として、このファイルリストを使用したいですmakefile内のターゲット

これを達成する方法を教えてもらえますか?

PS:私は初心者レベルです。メイクファイル

おかげ Sundeep

+0

をできますか? – hering

+0

これは非常に簡単ですが、なぜそれが必要ですか?しかし、知られている の前提条件のリストをファイルに入れておき、それを 'make 'に読み込むだけでは、メイクファイルにリストを入れるのはもっと複雑で壊れやすいだけです。 –

+0

私はまだ何かを試してみませんか?私がファイルリストになるenv変数の定義をどこに置くことができるのか分かりません。 –

答えて

1

私は別のステップでメイクファイルにあなたのファイルリストを変換することによって、これを行うだろう:

# Makefileall: 
all: depsfromfile.out 
depsfromfile.mk: 
    (echo "depsfromfile:"; cat depsfromfile)| sed -e '/^#/d' -e 's/$/ \\/' -e '$s/ \\//' > depsfromfile.mk # there is a \t at the beginnging of this line! 

-include depsfromfile.mk 
depsfromfile.out: depsfromfile 
    @touch depsfromfile depsfromfile.out 
depsfromfile: 
    cat $^ > [email protected] 
    @touch depsfromfile 

ファイルリストで

# depsfromfile 
a 
b 
c 

depsfromfileのMakefileはそのを自動生成しますファイルはdepsfromfileからの依存関係です。テストターゲットはdepsfromfileを使用して出力を生成します。

depsfromfile.mkに自動生成されたdepsfromfile:ターゲットは、依存関係を含んでいます。

depsfromfile.outターゲットは、depsfromfileの依存関係が変更されたときにのみ再生成されます。

今あなたがこれまでに試してみました何

# echo "test a" > a 
# echo "test b" > b 
# echo "test c" > c 
# make 
cat a b c > depsfromfile.out 
# make 
make: Nothing to be done for 'all'.