Makefile未创建可执行的

Makefile未创建可执行的,makefile,Makefile,我在这里有一个makefile: CC := gcc ODIR := build SDIR := source IDIR := include LDIR := lib CFLAGS := -I$(IDIR) -fms-extensions -O2 -Wall LFLAGS := -L$(LDIR) CFILES := $(wildcard $(SDIR)/*.c) OBJS := $(patsubst $(SDIR)/%.c, bu

我在这里有一个makefile:

CC      :=  gcc
ODIR    :=  build
SDIR    :=  source
IDIR    :=  include
LDIR    :=  lib
CFLAGS  :=  -I$(IDIR) -fms-extensions -O2 -Wall
LFLAGS  :=  -L$(LDIR)
CFILES  :=  $(wildcard $(SDIR)/*.c)
OBJS    :=  $(patsubst $(SDIR)/%.c, build/%.o, $(wildcard $(SDIR)/*.c))

PLATFORM = $(shell uname)

ifeq ($(findstring Linux,$(PLATFORM)),Linux)
    TARGET=$(shell basename $(CURDIR))
endif

ifeq ($(findstring Darwin,$(PLATFORM)),Darwin)
     TARGET=$(shell basename $(CURDIR))
endif

ifeq ($(findstring MINGW,$(PLATFORM)),MINGW)
    TARGET=$(shell basename $(CURDIR)).exe
endif

$(TARGET): $(ODIR) $(OBJS)
    $(CC) $(ODIR)/*.o -o $(TARGET) $(CFLAGS) $(LFLAGS)

$(ODIR)/%.o: $(SDIR)/%.c
    $(CC) -c -o $@ $< $(CFLAGS) 

$(ODIR):
    @mkdir $@

.PHONY: clean

clean:
    rm -f $(TARGET) $(ODIR)/*.o
CC:=gcc
ODIR:=构建
SDIR:=源
IDIR:=包括
LDIR:=lib
CFLAGS:=-I$(IDIR)-fms扩展-氧气-墙壁
LFLAGS:=-L$(LDIR)
c文件:=$(通配符$(SDIR)/*.c)
OBJS:=$(patsubst$(SDIR)/%.c,build/%.o,$(通配符$(SDIR)/*.c))
平台=$(shell uname)
ifeq($(findstring Linux,$(平台)),Linux)
目标=$(shell basename$(CURDIR))
恩迪夫
ifeq($(findstring Darwin,$(平台)),Darwin)
目标=$(shell basename$(CURDIR))
恩迪夫
ifeq($(findstring MINGW,$(PLATFORM)),MINGW)
TARGET=$(shell basename$(CURDIR)).exe
恩迪夫
$(目标):$(ODIR)$(OBJS)
$(CC)$(ODIR)/*.o-o$(目标)$(CFLAGS)$(LFLAGS)
$(ODIR)/%.o:$(SDIR)/%.c
$(CC)-c-o$@$<$(CFLAGS)
美元(ODIR):
@mkdir$@
.假冒:干净
清洁:
rm-f$(目标)$(ODIR)/*.o

问题是它不想创建exe。在windows、linux上试用过,我的windows上安装了mingw(使用mingw32 make.exe),但仍然没有exe。有人知道怎么解决这个问题吗?提前谢谢

在linux上,它不应该创建.execwhere的
CURDIR
定义?
CURDIR
是GNU make中的内置变量。您说“不想创建exe”,但这不是问题描述。运行
make
时,会发生什么情况?显示了什么输出?顺便说一句,我不知道为什么你使用
shell basename
而不是GNU make的内置
notdir
函数。make-n的输出是什么?@madscient这个makefile应该创建一个excutable(根据它的用途),当我运行make时,我只得到build文件夹,但它是空的。