16

メイクファイルのチュートリアルで次の行を見つけましたが、太字の行に問題があります。

1行で書くと

program_C_SRCS:=$(*.c)

それは動作しません。では、ここで行うワイルドカード ワードとは何かを教えてください。この単語はメイクファイルのみに固有のものですか?

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

私はファイルを作成するのが初めてなので、質問が非常に基本的である場合はご容赦ください。

チュートリアルのリンク

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)
4

2 に答える 2

23

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

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

于 2012-06-25T11:37:07.210 に答える
2

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

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

.cファイルをファイルに変換する場合.o、次の構文が役立つとします。

program_C_OBJS:=$(patsubst %.c,%.o,$(wildcard *.c))
于 2014-06-05T05:01:01.373 に答える