Windows上的Gnuwin32:makefile“命令的语法不正确。”

时间:2018-07-13 21:47:23

标签: python makefile build python-2.x gnuwin32

我正在尝试调用 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 个答案:

答案 0 :(得分:0)

您必须删除斜杠之间的间距,否则参数解析会认为存在多个参数(您也可以忘记创建$(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"

(如您所见,除非在mkdir是MSYS的MSYS shell中运行它,否则很难将文件从Linux移植到Windows,并记住存在本机和MSYS版本的make命令中,我也被抓到了一次:How to force make to use bash as a shell on Windows/MSYS2