如何用makefile编译多个c文件

请问,如何用一个makefile同时编译多个c文件。比如我有三个c文件,1.c 2.c 3.c然后在linux下建立一个makefile。然后通过一个make命令。一下子就编译这三个c文件。

假设有下面几个c++文件:
wherewhen.h wherewhen.c
countdown.h countdown.c 包含了math.h, 需要连接库文件
main.c 主函数, main.c 包含了两个头文件 wherewhen.h and countdown.h
1、第一种编译方法:
g++ -Wall -g wherewhen.c countdown.c main.c -lm -o myprogram
生成可执行文件myprogram
2、第二中编译方法, 分别编译各个文件:
g++ -Wall -g -c wherewhen.c
g++ -Wall -g -c countdown.c
g++ -Wall -g -c main.c
g++ -g wherewhen.o countdown.o main.o -lm -o myprogram
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-06
使用
.PHONY,
使用方法见下面描述或参考链接.
经过测试可行.
---------
phony
目标可以有依赖关系。当一个目录中有多个程序,将其放在一个makefile
中会更方便。因为缺省目标是makefile
中的第一个目标,通常将这个phony
目标叫做"all",其依赖文件为各个程序:
all
:
prog1
prog2
prog3
.PHONY
:
all
prog1
:
prog1.o
utils.o
cc
-o
prog1
prog1.o
utils.o
prog2
:
prog2.o
cc
-o
prog2
prog2.o
prog3
:
prog3.o
sort.o
utils.o
cc
-o
prog3
prog3.o
sort.o
utils.o
这样,使用"make"将可以将三个程序都生成了。d
当一个phony
目标是另一个的依赖,其作用相当于子程序,例如:
.PHONY:
cleanall
cleanobj
cleandiff
cleanall
:
cleanobj
cleandiff
rm
program
cleanobj
:
rm
*.o
cleandiff
:
rm
*.diff
----------
我测试的Makefile:
OBJS=main.o
sub.o
all
:
test
sam
.PHONY:all
test
:
$(OBJS)
gcc
-o
test
$(OBJS)
sam
:
sam.o
gcc
-o
sam
sam.o
main.o
:
main.c
sub.h
gcc
-c
main.c
sub.o
:
sub.c
sub.h
gcc
-c
sub.c
sam.o
:
sam.c
gcc
-c
sam.c
第2个回答  推荐于2017-09-26
用依赖,例如让all target依赖prog1 - prog3. 这样子make的时候就一起了。

#Makefile for building 3 programmings
all: prog1 prog2 prog3

prog1: 1.c
$(CC) $< -o $@

prog2: 2.c
$(CC) $< -o $@

prog3: 3.c
$(CC) $< -o $@

.PHONY: all本回答被提问者采纳
第3个回答  2020-12-23

相似回答