【发布时间】:2013-01-29 18:21:23
【问题描述】:
我真的无法进入 makefile。在之前的项目中,我在 Makefile 中对所有编译任务进行了硬编码:
all: compile_a compile_b compile_c
compile_a:
${CC} ${CFLAGS} ${A_SRC} -o ${A_OUT}
等等。
但是由于最新的项目比以前的每个项目都有更多的文件,我想编写更好的 make 任务,当然少字符作为 make 对我的眼睛不是很友好(这让他们很痛苦) ! :-P
我想要什么:
- 一个任务来统治他们(只是
make projectname或make all,你知道吗?) - 每个 C 文件编译一个任务(我读过一些关于
%.o: %.c语法的内容,但并没有真正明白) - 一个链接任务(如何获取所有 .o 文件并链接它们而不用硬编码?)
- 一项清洁任务(哦,我能做到!)
项目结构为:
bin (binary goes here!)
src
some
directories
are
here
我不知道是否需要目标文件的目录,我把它们放在./bin,我认为这已经足够了,不是吗?
也许我只需要一个能用简单的话解释的人!
编辑: 正如有人指出的那样,没有真正的问题,所以这里是:
- 如何递归编译所有C文件到
bin/(filename).o - 如何在不知道名称的情况下链接“bin/”中的所有
.o文件
也许这会有所帮助。
【问题讨论】:
-
你并没有真正提出问题。你在哪个部分有问题?你真正想做什么?
-
使用 makefile 建立一个体面的构建系统比看起来要多。尝试使用 CMake 或 SCons 等构建工具。 编辑: 困难的部分是将
.c和.h文件之间的依赖关系放入Makefile,有一些工具可以帮助解决这个问题,但它很混乱。 See this article