2008-11-08

GNU makeとSolaris makeのシェル置換

Makefileを書くとき、別の場所にある不特定多数の複数のファイルのベースファイル名だけが定義されたマクロを定義したいとする。

GNU makeだと
DIR = xxx/yyy/zzz
FILES = $(shell cd $(DIR); echo *.cc)

Solaris makeだと
DIR = xxx/yyy/zzz
CMD = cd $(DIR); echo *.cc
FILES = $(CMD:sh)

でできるらしい。

でも、できれば同じMakefileを使いたいものだ。いろいろ迷って

DIR = xxx/yyy/zzz
CMD = cd $(DIR); ls *.cc
FILES = $(CMD:sh) $(shell $CMD)

としてみた。一応動くけど… 微妙

サブMakefileを動的に作って、それを読み込ませるべきかな?

0 件のコメント: