make.exe を使用しているときに、ターゲット名内のスペースを機能させる方法はありますか? この非常に古いバグレポートが正しい場合、それは不可能のようです: http://savannah.gnu.org/bugs/?712
参考までに、大きな問題は、次のような makefile コマンドの断片です。
"foo bar baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
... 3 つの別個のコマンドとして扱われるようです: 1 つは "foo (含まれていることに注意してください)" をビルドし、もう 1 つは bar をビルドし、最後に 1 つは "baz" をビルドします (これも "を含みます)。これは、make.exe が区切り文字としてスペースを使用しているように見えるためです。
ただし、たとえば "Hello World.exe" をビルドしたい場合があると想定するのは合理的です。これは不可能のようです。二重引用符は機能せず、個別の単語をエスケープすることもできません (どこかで読んだことがありますが、リンクを覚えていません)。
"foo\\ bar\\ baz": $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
これを修正する他の方法はありますか?公式マニュアルでは、スペースによるトークン化のみを確認していますが、他の目的でスペースを使用する方法は提供していません: http://www.gnu.org/software/make/manual/make.html#Rule-構文
編集:示唆されているように、私も単一のスラッシュを試しましたが、これらは二重のスラッシュとまったく同じ効果があります。最初の単語のルールが見つからないと不平を言う:
mingw32-make.exe: *** No rule to make target `foo', needed by `all'. Stop.
ただし、実行可能ファイル「foo bar baz.exe」は正しく生成されますが、リンクは単語ごとに毎回行われます。