【问题标题】:Make in Cygwin with spaces in file names在 Cygwin 中使用文件名中的空格
【发布时间】:2016-06-23 19:07:27
【问题描述】:

我觉得这可能是一个简单的问题,但我一整天都在坚持。我正在使用 Cygwin 和 WinAVR 来编译 arduino 库中的一些文件。我想使用makefile,但是文件名中的空格有问题(至少我认为是这样)。我做了一个链接来绕过它,但这也不起作用!已经有一些关于文件名中空格的问题,但没有一个对我有帮助。

我的生成文件:

#ARDUINO_PATH=/cygdrive/c/Program\ Files\ \(x86\)/Arduino/hardware/arduino/avr/cores/arduino
ARDUINO_PATH=./link_to_arduino_dir
SRC=$(wildcard $(ARDUINO_PATH)/*.c)


all: echo $(SRC)

$(SRC):
    avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -I $(ARDUINO_PATH) -c -o . $@

echo:
    echo $(SRC)

在通配符之后,$SRC 为空。运行这个makefile只会有一个空的“echo”然后返回。

编辑:

链接是用

创建的

ln -s /cygdrive/c/Program\ Files\ \(x86\)/Arduino/hardware/arduino/avr/cores/arduino link_to_arduino_dir

像 'ls' 这样的简单命令可以使用它,这就是我如此困惑的原因

【问题讨论】:

标签: c makefile cygwin avr-gcc


【解决方案1】:

使用 DOS 名称 (8.3) 的旧 Windows 技巧怎么样?

/c/Progra~2/代替/c/Program\ Files\ \(x86\)/

注意:在 64 位 Windows 上,Progra~1 将指向“Program Files”,Progra~2 将指向“Program Files (x86)”。如果您在 32 位系统上运行,只需使用 Progra~1

【讨论】:

  • 嗯,这是一个巧妙的技巧!它在 cygwin 中对我有用(“ls /cygdrive/c/Progra~2/Arduino/hardware/arduino/avr/cores/arduino/*.c”获取正确的文件列表),但也不适用于通配符: (
猜你喜欢
  • 2011-05-13
  • 1970-01-01
  • 2023-02-22
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多