具有多个可执行文件的makefile

具有多个可执行文件的makefile

我正在尝试编写一个Makefile,它使用宏一次从多个文件创建多个可执行文件。我试着搜索以前回答的问题,但是,由于我对C语言编程和与GCC一起工作相当陌生,所以我无法找到我的问题的答案。

到目前为止,我拥有的是:

CC=gcc
CFLAGS=-I.OBJ = ex1.c ex3.c
EXECUTABLE = ex1 ex3

$(EXECUTABLE): $(OBJ)
    gcc -o $@ $^ $(CFLAGS)clean:
    rm -f $(EXECUTABLE)

我想要这条线

$(EXECUTABLE): $(OBJ)

分别从ex1.cex3.c文件创建可执行文件EX1和EX3。


红糖糍粑
浏览 941回答 3
3回答

繁星点点滴滴

一些建议(假设你使用GNU 制作,使,而不是别的东西)首先,运行一次make -p,你就会明白什么是内置的规则make就是知道。特别是COMPILE.c和LINK.c然后,我建议 CFLAGS= -g -Wall -I.(因为你真的想-g用于调试,以及-Wall得到大多数警告)你可能不需要$(EXECUTABLE): $(OBJ)     gcc -o $@ $^ $(CFLAGS)然而,我建议在大多数其他规则之前添加.PHONY: all clean all: $(EXECUTABLES)实际上,我会给你的Makefile(为GNU make!)如下# file MakefileCC= gcc RM= rm -vf CFLAGS= -Wall -g CPPFLAGS= -I.SRCFILES= ex1.c ex2.c ## or perhaps $(wildcard *.c)OBJFILES= $(patsubst %.c, %.o,  $(SRCFILES))PROGFILES= $(patsubst %.c, %, $(SRCFILES)).PHONY: all clean all: $(PROGFILES)clean:      $(RM) $(OBJFILES) $(PROGFILES) *~## eof Makefile记住附签中的一个重要角色Makefile-S(行动部分规则)。在这个答案中,以四个空格开头的行至少应该以附签性格。一旦一切都调试完毕,请考虑运行make clean把所有的东西都清理干净,然后make -j CFLAGS=-O2 all与优化并行编译所有内容。最后,我建议使用remake跑步remake -x调试复杂Makefile-S当然,我假设您的目录只有一个文件程序。顺便说一句,还有其他建筑程序。也许你可以考虑奥麦克不要忘记使用版本控制系统,例如吉特你的源文件。现在也是学习这种工具的时候了。

慕仙森

你已经接近了,但你需要一个模式规则:$(EXECUTABLE): % : %.c然后是一个默认规则,让它同时构建两个:all: $(EXECUTABLE)
打开App,查看更多内容
随时随地看视频慕课网APP