jserv / MazuCC

A minimalist C compiler with x86_64 code generation
BSD 2-Clause "Simplified" License
515 stars 64 forks source link

大家好,我用winlib的C编译器在win下编译成功 #24

Open qwas982 opened 3 weeks ago

qwas982 commented 3 weeks ago

大家好,我用winlib的C编译器在win下编译成功,

但是需要改变makefile文件的编写. mingw64是默认的, makefile文件改造为如下:

# 目标可执行文件
目标 = mzcc

# 编译选项
编译选项 = -Wall -Werror -std=gnu99 -g -I.

# 对象文件
对象文件 = lexer.o codegen_x64.o parser.o verbose.o main.o

# 依赖文件
依赖文件 := $(对象文件:%.o=.%.o.d)

# 规则:编译 .c 文件为 .o 文件
%.o: %.c
    @echo "  CC     $@"  # 使用 echo 代替 printf
    $(CC) -o $@ $(编译选项) -c -MMD -MF .$@.d $<

# 规则:链接对象文件生成目标可执行文件
$(目标): $(对象文件)
    @echo "  LD     $@"  # 使用 echo 代替 printf
    $(CC) $(编译选项) -o $@ $^

# 清理生成的文件
.PHONY: clean
clean:
    $(RM) $(目标) $(对象文件) $(依赖文件)  # 确保这一行前面是制表符

# 包含依赖文件
-include $(依赖文件)

随后在wt的ps里执行make得到

PS Z:\MazuCC-master> make
"  CC     lexer.o"  # 浣跨敤 echo 浠f浛 printf
cc -o lexer.o -Wall -Werror -std=gnu99 -g -I. -c -MMD -MF .lexer.o.d lexer.c
"  CC     codegen_x64.o"  # 浣跨敤 echo 浠f浛 printf
cc -o codegen_x64.o -Wall -Werror -std=gnu99 -g -I. -c -MMD -MF .codegen_x64.o.d codegen_x64.c
"  CC     parser.o"  # 浣跨敤 echo 浠f浛 printf
cc -o parser.o -Wall -Werror -std=gnu99 -g -I. -c -MMD -MF .parser.o.d parser.c
"  CC     verbose.o"  # 浣跨敤 echo 浠f浛 printf
cc -o verbose.o -Wall -Werror -std=gnu99 -g -I. -c -MMD -MF .verbose.o.d verbose.c
"  CC     main.o"  # 浣跨敤 echo 浠f浛 printf
cc -o main.o -Wall -Werror -std=gnu99 -g -I. -c -MMD -MF .main.o.d main.c
"  LD     mzcc"  # 浣跨敤 echo 浠f浛 printf
cc -Wall -Werror -std=gnu99 -g -I. -o mzcc lexer.o codegen_x64.o parser.o verbose.o main.o

这表明项目构建成功了.

qwas982 commented 3 weeks ago

用原始的makefile文件并不能成功,

我是问gpt-4o-mini-2024-07-18大模型,得到了修改后的配置文件.并成功的. 我的提示语为: 重构这个make文件, 使用中文标识符编写,并且,去掉多余的配置代码,只保留构建项目的部分.