2012-03-15 1 views
1

私はmakeファイルを持っており、ファイルをディレクトリにコピーしようとしています。ディレクトリのパスは、環境変数に格納されます。問題は、私が環境変数からC:\ DataをC:Dataとして解釈するようにしたときです。これをエスケープ文字としてインパレットするのを止めるにはどうすればいいですか?環境変数を使ってMakeとWindowsでパスを形成する

+0

環境変数にスラッシュを使用しますか? –

+0

それは仕事をしますが、それは良い解決策のようには見えません。他のアイデア? – Dunc

+0

'DATA:= $(subst:、:/、$(DATA))'はどうですか? – Beta

答えて

4

実際には、スラッシュを使用することが最適で正しいソリューションです。 Windowsのユーティリティは常にスラッシュをサポートしているので、動作します。バックスラッシュの問題を避けるためにパス名を常に引用することを覚えようとするのは大変な作業です。

この場合、最初に注意する点は、問題がmakeでは問題ではないということです。 makeは正しいコンテンツをシェルに渡しています。 シェルで、エスケープ文字としてバックスラッシュを解析しています。

上記の通り、正解はスラッシュを使用することですが、人々がバックスラッシュを使用できるようにするには、メイクファイルを通過し、バックスラッシュが表示されるすべての引数を引用する必要があります。たとえば、

あなたの直面する問題を解決します。

あなたはまた、のような何かを行うことができ、これらの変数だけのカップルを持っている場合:

QDATA = '$(DATA)' 

、あなたが引用された値が欲しかったところ$(QDATA)を使用することを忘れないでください:

copyData : buildData 
     cp Release/*.tbl $(QDATA)/index 

PSを。スラッシュを使用してください! :-)

関連する問題