シンプルで理解しやすいMakefileエントリ(05)-文字列処理関数(patsubst、subst、strip、findstring、filter、filter-out、sort、word)

1.文字列関数の形式

関数呼び出しの形式は次のとおりです。

$(<function> <arguments>)

または

${<function> <arguments>}

その中で、

  • function 関数名です。
  • arguments 関数のパラメーターであり、パラメーターはコンマで区切る必要があります。

パラメータと関数名はスペースで区切られます。

関数を呼び出すときは、文字を使用し$、その後に括弧または中括弧を使用します。

2.パターン文字列置換関数patsubst

関数の形式は次のとおりです。

$(patsubst <pattern>,<replacement>,<text>)

関数の説明:関数関数はtext、コンプライアンスモードpattern単語を検索、一致する場合はreplacement置換を検索します戻り値は、置換後の新しい文字列です。例:

OBJ=$(patsubst %.cpp, %.o, 11.cpp 22.cpp 33.cpp)
all:
	echo $(OBJ)

makeコマンドを実行し、

wohu@ubuntu:~/cpp/ifeq$ make
echo  11.o  22.o  33.o
11.o 22.o 33.o
wohu@ubuntu:~/cpp/ifeq$ 

3.文字列置換関数subst

関数の形式は次のとおりです。

$(subst <from>,<to>,<text>)

関数の説明:この関数は、form置き換えられた文字列をクリアし、置き換えられた文字列toの新しい値を返します。例:

OBJ=$(subst oo,ss, faoo fcoo )
all:
	echo $(OBJ)

makeコマンドを実行し、

wohu@ubuntu:~/cpp/func$ make
echo  fass fcss 
fass fcss
wohu@ubuntu:~/cpp/func$ 

4.スペース機能ストリップを取り外します

関数の形式は次のとおりです。

$(strip <string>)

関数の説明:関数の機能は、文字列の最初と最後の文字列を削除し、複数の連続するスペースを1つのスペースにマージすることです。戻り値は、スペースが削除された文字列です。例:

OBJ=$(strip  a   b   c    )
all:
	echo $(OBJ)

makeコマンドを実行した後

wohu@ubuntu:~/cpp/func$ make
echo a b c
a b c
wohu@ubuntu:~/cpp/func$ 

5.文字列の検索関数findstring

関数の形式は次のとおりです。

$(findstring <find>,<in>)

関数の説明:関数関数は、ターゲット文字列の存在を検索する場合infindに配置することです。戻り値はターゲット文字列であり、存在しない場合は空です。例:

OBJ=$(findstring  is, it is dog)
all:
	echo $(OBJ)

makeコマンドを実行し、

wohu@ubuntu:~/cpp/func$ make
echo is
is
wohu@ubuntu:~/cpp/func$ 

6.フィルター機能フィルター

関数の形式は次のとおりです。

$(filter <pattern>,<text>)

機能説明:フィルターオフ機能は、textパターンpatternストリングに準拠した機能あり、複数存在する場合がありますpattern戻り値はフィルタリングされた文字列です。例:

OBJ=$(filter  %.cpp %.o, a.cpp b.o c.txt)
all:
	echo $(OBJ)

makeコマンドを実行し、

wohu@ubuntu:~/cpp/func$ make
echo a.cpp b.o
a.cpp b.o
wohu@ubuntu:~/cpp/func$ 

7.フィルター防止機能のフィルターアウト

関数の形式は次のとおりです。

$(filter-out <pattern>,<text>)

関数の説明:関数は関数関数であり、filter関数は正反対ですが、使用法は同じです。

pattern文字列に沿った削除モード、予約に一致する文字列。戻り値は予約文字列です。例:

OBJ=$(filter-out  %.cpp %.o, a.cpp b.o c.txt)
all:
	echo $(OBJ)

makeコマンドを実行し、

wohu@ubuntu:~/cpp/func$ make
echo c.txt
c.txt
wohu@ubuntu:~/cpp/func$ 

8.ソート関数sort

関数の形式は次のとおりです。

$(sort <list>)

関数の説明:関数はlist、ソートされた(昇順)機能語です。戻り値はソートされた文字列です。例:

OBJ=$(sort  z, y, y, x)
all:
	echo $(OBJ)

makeコマンドを実行し、

wohu@ubuntu:~/cpp/func$ make
echo x y, z,
x y, z,
wohu@ubuntu:~/cpp/func$ 

sortは、重複する文字列を削除します。

9.単語機能語を取る

関数の形式は次のとおりです。

$(word <n>,<text>)

関数の説明:関数関数はtext、最初のn単語で抽出さた関数です。最初のn単語を削除した戻り値例:

OBJ=$(word  3, a.cpp, b.cpp, c.cpp)
all:
	echo $(OBJ)

makeコマンドを実行し、

wohu@ubuntu:~/cpp/func$ make
echo c.cpp
c.cpp
wohu@ubuntu:~/cpp/func$ 

おすすめ

転載: blog.csdn.net/wohu1104/article/details/111024600
おすすめ