makefile用于多个.c文件,同一目录

时间:2012-06-30 02:43:57

标签: c gcc compilation makefile

我需要为4个文件创建一个makefile:q4.c,q3.c,q2.c,q1.c 这4个makefile的格式是什么样的?我知道所有的必要标志,预处理,编译,汇编和清理,但是4个程序的文件格式是什么样的?

附注:所有程序都在同一目录中。

感谢您的帮助 - Dave L

2 个答案:

答案 0 :(得分:4)

Makefile是一种非常全面和灵活的描述构建过程及其动作,依赖性等的方式。有很多可能的方法来编写它,因此对你的问题永远不会有简单的单一答案。为了举例,以下是您的Makefile在您的简单案例中的样子:

BIN = q1 q2 q3 q4

all: $(BIN)

clean:
    $(RM) $(BIN)

如果经常添加和删除源文件并且每个文件都应编译成独立的可执行文件,它也可能看起来像这样:

SRC = $(wildcard *.c)
BIN = $(patsubst %.c,%,$(SRC))

all: $(BIN)

clean:
    $(RM) $(BIN)

根据项目的规模和要求,它会变得越来越复杂。

我建议您从上面的示例开始,并阅读Make documentation以了解它可以做些什么。

另外,Make是相当古老,复杂的技术。掌握它需要花费大量的时间和练习,并且给你很少的响应。还有其他选择。我个人推荐CMake - 它更容易,更高级别的系统可以为您生成构建脚本。它支持Makefile,Xcode等等。这看起来更糟糕。

答案 1 :(得分:2)

如果您正在使用gnu make,并且每个标志都相同:

CFLAGS=-ffoo -O2 -fguess-at-hard-math
all: q1 q2 q3 q4

否则,您可以明确指定

all: q1 q2 q3 q4
q1: q1.c
    gcc -o q1 q1.c
q2: q2.c 
    gcc -o q2 -fq2-flags q2.c
...