2012-06-25 5 views
8

私はmakefileのチュートリアルで次の行を見つけましたが、太字の行にはいくつか問題があります。 1行でmakefileでワイルドカードは何を意味しますか?

、私はそれが動作しません

program_C_SRCS:=$(*.c) 

を書く場合。ですから、ここでは ワイルドカード単語が何であるか教えてください。この単語はmakefileにのみ固有のものですか?

チュートリアルでは、2行目がテスト置換を実行すると書かれています。誰でも私にこのテキスト置換について何か教えてもらえますか?

私の質問が非常に基本的なものであれば、私はfilestuffを作るために新しいので、私を許してください。

link of tutorial

CC:=g++ 
program_NAME:=myprogram 
**program_C_SRCS:=$(wildcard *.c)** # 1 line 
program_CXX_SRCS:=$(wildcard *.cc) 
**program_C_OBJ:=$(program_C_SRCS:.c=.o)** # 2 line 
program_CXX_OBJ:=$(program_CXX_SRCS:.c=.o) 
program_OBJ:= $(program_C_OBJ) $(program_CXX_OBJ) 

答えて

10

あなたは2つのソースファイルがあるとします。 foo.cおよびbar.c

program_C_SRCS:=$(wildcard *.c) # 1 line 

wildcard関数はMake構文です。変数program_C_SRCSの値はfoo.c bar.cになります(この順序ではない可能性があります)。

program_C_OBJ:=$(program_C_SRCS:.c=.o) # 2 line 

これはsubstitution referenceです。テキストを変換し、1つの部分文字列を別の部分文字列に置き換えます。変数program_C_OBJの値はfoo.o bar.oになりました。

1

makeファイルでワイルドカード機能を使用すると、特定の拡張子を持つすべてのソースファイルを一覧表示できます。たとえば:

program_C_OBJS:=$(patsubst %.c,%.o,$(wildcard *.c)) 

program_C_SRCS:=$(*.c) // In this the variable program_C_SRCS will have all the files with ".c" extension. 

あなたは.cファイルが.oファイルに変換したい場合は、次の構文が有用である可能性があると仮定します

関連する問題