通常、ターゲットhello_world
をmakeするときには、
make hello_world
とします。
同じ要領で、ターゲットhello=world
をmakeしようとして、
make hello=world
とすると、意図した結果にはなりません(変数hello
の値をworld
に設定して、デフォルトターゲットがmakeされます)。
これをhello=world
のmakeであると認識させるにはどうすればよいでしょうか?
一般論としてmakeのターゲット名に'='を使うべきでないことは理解していますが、やむをえない事情によりwork-aroundを探しています。
状況を再現する最小構成
GNU Make 4.2.1 on cygwin x86_64
Makefile
の内容(スペースはタブに変更してください)
HELLO:=hello=world
all: # "all world"
@echo all $(hello)
$(HELLO): # "hello=world"
@echo hello=world $(hello)
普通に実行
$ make hello=world
all world
シングルクォートして実行
$ make 'hello=world'
all world
ダブルクォートして実行
$ make "hello=world"
all world
エスケープして実行
$ make hello\=world
all world
シングルクォート+エスケープして実行
$ make 'hello\=world'
all
ダブルクォート+エスケープして実行
$ make "hello\=world"
all