type t (* void *)

ソフトウエアのこととか

プログラミング: Makefileの雑い話2

ハマった


X = a b c
X += d e f

all:
  echo $(X)

これはmakeを叩いてみるとa b c e e fと出力される。 まぁ+=はこれで良さそう。

ちょっと直感に反している例として、make X=123みたいに 外側から与えられる場合。これは123とだけ出力される。

コレを123 d e fと出力させたかったらoverrideを加えればいい。

X = a b c
override X += d e f

all:
  echo $(X}

これで無事123 d e fと出力される。 しかしまぁこれ、なかなか悩ましくて外側から与えられる場合には、例えばコンパイルフラグが完全な状況になっていて欲しい場合もあり悩ましい。 例えば最終的にCFLAGS=-DA -DBとなってて欲しいところを-DAだけ外から与えてoverride +=-DBとする設計の場合、この+=を無視できなくなってしまう。しかし外側から与えられると共通のフラグは勝手に+=されて欲しい気持ちにもなって悩ましい。。。

結局は人間の運用をどうするべきかということなのですが、まぁ結論がない。。。。。