通常、ターゲット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