我有一个make文件,我正在尝试使用它将文件复制到目录。目录的路径存储在环境变量中。问题是当我运行时,将环境变量中的C:\ Data解释为C:Data。如何阻止将其作为转义字符?
copyData : buildData
cp Release/*.tbl $(DATA)/index
results in:
cp Release/*.tbl C:\Data/index
cp: `C:Data/index': specified destination directory does not exist
Try `cp --help' for more information.
答案 0 :(得分:4)
实际上,使用正斜杠是最好的,也是正确的解决方案。 Windows实用程序总是支持正斜杠,因此它可以工作,并且试图记住始终引用路径名以避免反斜杠问题是一个主要的麻烦。
在这种情况下,首先要注意的是问题不是make
的问题。 make
正在将正确的内容传递给shell;它是 shell ,它将反斜杠解析为转义字符。
正如我上面所说,正确的答案是使用正斜杠但是如果你想允许人们使用反斜杠你必须通过你的makefile并引用所有可能出现反斜杠的参数。例如:
copyData : buildData
cp Release/*.tbl '$(DATA)'/index
将解决您的直接问题。
如果您只有几个变量,您还可以执行以下操作:
QDATA = '$(DATA)'
然后记得在你想要引用值的地方使用$(QDATA)
:
copyData : buildData
cp Release/*.tbl $(QDATA)/index
PS。使用正斜杠!! : - )