これはStackoverflowに関する私の最初の質問です。私が何かばかげて尋ねるなら、私を許してください。
問題:
「my dir /」ディレクトリにあるプログラムをスペースで区切りたいとします。プログラムのパス名が "my dir/test.c"であるとします。ここで
私がしようとしていたサンプルのmakefileです:
makeルールでMAKEFILEが文字列内のバックスラッシュシーケンスを保持する方法を教えてください。
CC = gcc
DIR = my\ dir
$(DIR)/test.out: $(DIR)/test.c
# $(CC) $< -o [email protected]
$(CC) $(DIR)/test.c -o $(DIR)/test.out
あなたが最後の行(行-5)で、私は元のパス名と書かれていることを見ることができるように前提条件とターゲットにそれぞれ記述されたファイルを直接出力します。それは、コマンドを生成するので、これは正常に動作やって:GCCや他に(スペースを含む)のファイル名を渡すの私の\ DIR/test.outに-o
gccの私の\ DIR/test.cの
た構文的に正しい方法シェルコマンド。
2番目の最後の行(行-4)は、問題のある行です(コメント行)。私は、自動変数$ @を(ターゲット)と$ <を使用しました(最初で唯一の前提条件)私は
私\ dirを/ test.outにと私の\ディレクトリであることが予想GCCのファイル名引数を生成します/test.cである。しかし何らかの理由で、何らかの理由で、生成されたファイル名がmy dir/test.outとmy dir/test.cであるため、出力されるコマンドは
gcc my dir/test.c -o my dir/testです。 .out
ここで、gccは私のとdir/test.cを別々の2つの異なる入力ファイル名とみなし、エラーが発生します。
私の質問:
ものもバックスラッシュを保持する方法はありIのコメントを解除行-4とコメント行-5上記のMakefileの時にここで
は、生成されたエラー出力のスクリーンショットです私は自動変数を使っていましたか?または、自動変数を使用するのと同じ目標を達成し、私の問題を解決する代替手段がありますか?ここでは柔軟性が重要なので、
ご協力いただきありがとうございます。
それは働いた!どのように私はこれを考えていない可能性があります!さて、一重引用符を使用すると、生成されたコマンドはgcc 'my dir/test.c' -o 'my dir/test.out'になります。二重引用符の場合も同様です。私の場合。ありがとう@RuslanOsmanov。あなたは私の日を救った –