为了账号安全,请及时绑定邮箱和手机立即绑定

具有多个可执行文件的makefile

具有多个可执行文件的makefile

C C++
红糖糍粑 2019-07-12 15:38:11
具有多个可执行文件的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。
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

一些建议(假设你使用GNU 制作,使,而不是别的东西)

首先,运行一次make -p,你就会明白什么是内置的规则make就是知道。特别是COMPILE.cLINK.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

当然,我假设您的目录只有一个文件程序。

顺便说一句,还有其他建筑程序。也许你可以考虑奥麦克

不要忘记使用版本控制系统,例如吉特你的源文件。现在也是学习这种工具的时候了。


查看完整回答
反对 回复 2019-07-12
?
慕仙森

TA贡献1827条经验 获得超7个赞

你已经接近了,但你需要一个模式规则:

$(EXECUTABLE): % : %.c

然后是一个默认规则,让它同时构建两个:

all: $(EXECUTABLE)


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 940 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信