编写适用于Windows的正确的ANSI C Makefile的解决方法如下:
首先,确保已安装并配置好了Make工具。在Windows上,可以使用MinGW或Cygwin来获取Make工具。
接下来,创建一个名为Makefile
的文件,并在其中添加以下内容:
CC = gcc
CFLAGS = -Wall -Wextra -std=c99
SRCDIR = src
OBJDIR = obj
BINDIR = bin
SOURCES = $(wildcard $(SRCDIR)/*.c)
OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))
EXECUTABLE = $(BINDIR)/myprogram
.PHONY: all clean
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(CFLAGS) $^ -o $@
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf $(OBJDIR)/*.o $(EXECUTABLE)
上述Makefile的内容解释如下:
CC
:指定编译器为gcc。CFLAGS
:指定编译选项,包括开启所有警告并使用C99标准。SRCDIR
:指定源代码目录。OBJDIR
:指定目标文件存放目录。BINDIR
:指定可执行文件存放目录。SOURCES
:通过通配符获取所有源文件。OBJECTS
:将源文件转换为目标文件。EXECUTABLE
:指定最终生成的可执行文件。all
:默认目标,生成可执行文件。$(EXECUTABLE)
:依赖于所有目标文件,通过gcc链接生成可执行文件。$(OBJDIR)/%.o
:每个源文件对应的目标文件规则,通过gcc编译生成目标文件。clean
:清理目标文件和可执行文件。确保Makefile文件与源代码文件(以.c为后缀)位于同一目录中。
最后,在命令行中进入Makefile所在的目录,运行make
命令即可生成可执行文件。如果需要清理生成的目标文件和可执行文件,可以运行make clean
命令。
请注意,上述Makefile假设源代码文件位于名为src
的目录中,目标文件将会生成在名为obj
的目录中,可执行文件将会生成在名为bin
的目录中。如果你的项目结构不同,可以根据实际情况进行修改。