Gnuwin32:windows "The syntax of the command is incorrect." 上的生成文件

Gnuwin32: makefile on windows "The syntax of the command is incorrect."

我正在尝试调用 make 来编译我的代码,但我一直收到此错误:

C:\Users\lovel\Anaconda3\S4>make
mkdir -p build
mkdir -p build / S4k
The syntax of the command is incorrect.
make: *** [objdir] Error 1

这是 python 中我的 makefile 代码的一部分:

objdir:
    mkdir -p $(OBJDIR)
    mkdir -p $(OBJDIR) / S4k
    mkdir -p $(OBJDIR) / modules

S4_LIBOBJS = \
    $(OBJDIR)/S4k/S4.o \
    $(OBJDIR)/S4k/rcwa.o \
    $(OBJDIR)/S4k/fmm_common.o \
    $(OBJDIR)/S4k/fmm_FFT.o \
    $(OBJDIR)/S4k/fmm_kottke.o \
    $(OBJDIR)/S4k/fmm_closed.o \
    $(OBJDIR)/S4k/fmm_PolBasisNV.o \
    $(OBJDIR)/S4k/fmm_PolBasisVL.o \
    $(OBJDIR)/S4k/fmm_PolBasisJones.o \
    $(OBJDIR)/S4k/fmm_experimental.o \
    $(OBJDIR)/S4k/fft_iface.o \
    $(OBJDIR)/S4k/pattern.o \
    $(OBJDIR)/S4k/intersection.o \
    $(OBJDIR)/S4k/predicates.o \
    $(OBJDIR)/S4k/numalloc.o \
    $(OBJDIR)/S4k/gsel.o \
    $(OBJDIR)/S4k/sort.o \
    $(OBJDIR)/S4k/kiss_fft.o \
    $(OBJDIR)/S4k/kiss_fftnd.o \
    $(OBJDIR)/S4k/SpectrumSampler.o \
    $(OBJDIR)/S4k/cubature.o \
    $(OBJDIR)/S4k/Interpolator.o \
    $(OBJDIR)/S4k/convert.o`

我正在研究 Windows。我把'/'改成'\'也没用,我最后加了'\'也没用。

你必须删除斜杠周围的空格或参数解析认为有超过 1 个参数(你也可以忘记创建 $(OBJDIR) 因为 -p 选项创建所有不存在的目录到目标目录:

Unix/Linux 合规应为:

objdir:
    mkdir -p $(OBJDIR)/S4k
    mkdir -p $(OBJDIR)/modules

请注意,当使用 Windows mkdir 命令时,应删除 -p 选项(windows 版本默认执行此操作并且无法识别该选项) .根据您收到的消息,您可能 运行 是 windows 版本,因此它应该是:

objdir:
    mkdir $(OBJDIR)\S4k
    mkdir $(OBJDIR)\modules

(斜杠 被 Windows mkdir 命令接受,因此 $(OBJDIR) 也应该使用反斜杠构建)

斜杠用于基本命令中的命令开关,例如 mkdir,否则您必须引用路径

objdir:
    mkdir "$(OBJDIR)/S4k"
    mkdir "$(OBJDIR)/modules"

(如您所见,拥有从 Linux 到 Windows 的可移植 makefile 相当困难,除非您 运行 它在 MSYS shell 中,其中 mkdir 是 MSYS 版本,请记住 make 命令也有原生版本和 MSYS 版本,我被抓住了一次:)