windows - 在 Make 和 windows 中使用环境变量形成路径

标签 windows path makefile environment-variables

我有一个 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.

最佳答案

实际上,使用正斜杠是最佳且正确的解决方案。 Windows 实用程序始终支持正斜杠,因此它可以正常工作,并且试图记住始终引用路径名以避免反斜杠问题是一个主要的麻烦。

在这种情况下,首先要注意的是问题不是make 的问题。 make 将正确的内容传递给 shell;是 shell 将反斜杠解析为转义字符。

正如我在上面所说的,正确的答案是使用正斜杠,但是如果你想让人们使用反斜杠,你必须检查你的 makefile 并引用所有可能出现反斜杠的参数。例如:

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

将解决您眼前的问题。

如果你只有几个这样的变量,你也可以这样做:

QDATA = '$(DATA)'

然后记得在需要引用值的地方使用 $(QDATA):

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

附言。使用正斜杠!! :-)

关于windows - 在 Make 和 windows 中使用环境变量形成路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722537/

相关文章:

c++ - 无法在 Fedora 上连接冰淇淋 (icecc)

转换数据 block 以与结构保持一致

python - 如何在 Python 中获取绝对文件路径

c++ - 限制数组类型的大小,同时还没有实例

Django 模板查找顺序

c - 我怎样才能获得所有文件的列表及其在c中的路径

makefile - 制作 : how to replace character within a make variable?

perl - WWW::Mechanize::Firefox - OpenSuse-Linux 版本 12.1 上的安装问题

windows - 如何在 git bash 中设置环境变量?

c++ - 与遗留 TCHAR 代码接口(interface)的正确样式