1. ホーム
  2. string

Makefile : 文字列を含む

2023-08-20 03:09:43

質問

ある変数が返す MINGW32_NT-5.1 または CYGWIN_NT-5.1. (最後にドット)

与えられた変数に NT-5.1 が含まれているかどうかを比較する必要があります。

cygwinを使用していますが、かなり多くの*nixと互換性があることを望みます。

どのように解決するのですか?

この findstring 関数は、あなたの心が望むものです。

$(findstring find,in)

検索 に存在する 見つける . 発生した場合、その値は を見つける であり、それ以外の場合は空である。この関数は、与えられた文字列の中に特定の部分文字列があるかどうかを調べるために、条件分岐で使用することができます。したがって、2つの例では

$(findstring a,a b c)
$(findstring a,b c)

値を生成する "a""" (空文字列)となります。参照 テストフラグ の実用的なアプリケーションについては findstring .

のようなものです。

ifneq (,$(findstring NT-5.1,$(VARIABLE)))
    # Found
else
    # Not found
endif

このコンマは何のためにあるのでしょうか? ifneq (,$(... ?

次のように解析します。 ifneq(A,B) ここで A は空文字列で B $(findstring...) . Makefile では文字列を引用しないので、変に見えます。