LoginSignup
2
1

More than 5 years have passed since last update.

Makeのsubstで半角スペースを除去する

Posted at

半角スペースを除去する方法が分からなかったので調べた。

参考

結論

FOO = 1 2  3
BAR = $(subst $() ,,$(FOO))  # BAR = 123

解説

  • 普通のsubstの使い方はこう。
FOO = 1a2aa3
BAR = $(subst a,x,$(FOO))  # 1x2xx3
  • 2文字目以降の半角スペースは同じように置換できる。
FOO = 1a 2a a 3
BAR = $(subst a ,x,$(FOO))  # 1x2xx3
  • でも先頭が半角スペースだと、トークンを区切る半角スペースと区別できない。
FOO = 1 a2 a3
BAR = $(subst  a,x,$(FOO))  # 1 x2 x3
  • なので、空の文字列が入った変数を先頭においてやる。
EMPTY =

FOO = 1 a2 a a3
BAR = $(subst $(EMPTY) a,x,$(FOO))  # 1x2xx3
  • $()に値を与えるのは(おそらく)不可能なので、常に空文字列が入っていることになる。これを上記の$(EMPTY)として使う。
FOO = 1 a2 a a3
BAR = $(subst $() a,x,$(FOO))  # 1x2xx3
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1