2012-04-01 16 views
0

私は以下のようにしたいと思います。私はMakefileのための可変引数リストを持っていたいと思います。変数の引数はメイクファイルに一覧表示されます

make VAR_ARG_LIST=src1,src2,src3,src4 

私はこれを行うことはできますか?可能であれば、Makefile内の変数VAR_ARG_LISTからsrc1、src2、またはsrc3をどのように抽出するのですか?

ありがとう、

答えて

0

本当に解決策の情報が不十分です。なぜそれらの値を抽出したいのですか?あなたは彼らと何をしたいですか?

しかし、あなたが質問した質問に答えることができ、有用であることを願っています。あなたはmakeが使用するマクロでターゲットのリストをしたい場合は、それら(と囲む引用符を区切るために空白を使用

COMMA := , 
VAR_ARG_LIST_A := $(subst $(COMMA), ,$(VAR_ARG_LIST)) 
VAR_ARG_LIST_1 := $(word 1,$(VAR_ARG_LIST_A)) 
VAR_ARG_LIST_2 := $(word 2,$(VAR_ARG_LIST_A)) 

など

+0

実際、私は可変引数リストに基づいてマクロを定義したかったのです。たとえば、 "src1"がVAR_ARG_LISTに見つかった場合は、スイッチ#SRC1をメークファイル内に定義したいと思います。そうでない場合、SRC1は定義されていません。あなたの答えは私のために十分に近いようです。私はそれを試してみましょう。コンマ区切りの文字列をVAR_ARG_LISTから抽出できたら、それを実現できます。 – user1293997

+0

'makefileの中でスイッチ#SRC1を定義するのはどういう意味なのか分かりませんが、単語がカンマで区切られたリストに存在するかどうかを確認しようとしているならば、' $(filter src1、$ '$(VAR_ARG_LIST))') 'が存在する場合は' src1'、そうでない場合は空になります。 – MadScientist

1

:あなたはGNUを使用している場合は、これを行うことができ作りますこれがすべてであまり苦労せずmakefile内で使用することができます

make VAR_ARG_LIST="src1 src2 src3 src4" 

PROGRAMS = ${VAR_ARG_LIST} 

all: ${PROGRAMS} 
コマンドラインでそれら) 210

となり、makefileの残りのルールからsrc1、... src4というプログラムを作成します。

これは大まかにあなたが何をしていない場合は、あなたの質問を明確にする必要があります。

+0

また、ターゲットのリストであれば、 'make src1 src2 src3 src4'だけで済みます。 – Idelic

関連する問題