4

gnu-makeを使用してユーザー定義関数に渡されたパラメーターから先頭の空白を削除するにはどうすればよいですか?

例えば:

define FOO
# --- some build rules

# run the built target
/home/user/dir/bin/$(1)

endef

先頭に空白がないため、次の呼び出しは正しく機能します。

$(eval $(call FOO,my_test ) )

残念ながら、$(1)先行スペースがあるため、以下は失敗します

$(eval $(call FOO, my_test ) )
                  ^
                Additional space to 'prettier' formatting

これは最終的に次のように拡張されます。

/home/user/dir/bin/ $(1)
                   ^
                 Leading whitespace

ユーザー定義関数に渡される引数から先頭の空白を削除するにはどうすればよいですか?

これを行うのは悪い形式ですか、それとも引数が先頭の空白なしで渡されると単純に想定する必要がありますか?

4

1 に答える 1

7

strip次の関数を使用します。

define FOO
# ...
/home/user/dir/bin/$(strip $(1))
endef

詳細については、テキスト関数を参照してください。このため、またどこでも使用しないようstripにするには、関数に引数を渡すときにコンマの後のスペースを避けるのが最善です。

于 2012-11-22T16:11:06.680 に答える