1

我正在尝试调用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 上工作。我把'/'改成'\'还是不行,我还加了'\'最后也没用。

4

1 回答 1

1

您必须删除斜杠周围的间距或参数解析认为有多个参数(并且您也可以忘记创建$(OBJDIR),因为-p选项会为目标目录创建所有不存在的目录:

符合 Unix/Linux 的应该是:

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

请注意,在使用 Windowsmkdir命令时,-p应删除该选项(Windows 版本默认情况下会这样做,并且无法识别该选项)。鉴于您收到的消息,您可能正在运行 Windows 版本,因此它应该是:

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

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

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

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

(如您所见,除非您在 MSYS shell 中运行它,否则很难将其从 Linux 移植到 Windows mkdir,并且请记住,该make命令也有本机和 MSYS 版本,我被抓住了一次:如何强制 make 在 Windows/MSYS2 上使用 bash 作为 shell

于 2018-07-13T21:51:51.733 回答