我正在尝试调用 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上工作。我将'/'更改为'\',但它不起作用,最后我也添加了'\',但也没有作用。
答案 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)