[英]how to make Makefile to compile the multiple c files and h files in one directory
[英]How to compile multiple separate C files in a directory using a Makefile?
我有 3 个不同的 C 文件位于同一目录中,我想使用 Makefile 将它们彼此分开编译。 这是我的 Makefile:
program1: program1.o
gcc program1.o -o program1
program1.o: program1.c
gcc -c program1.c
program2: program2.o
gcc program2.o -o program2
program2.o: program2.c
gcc -c program2.c
program3: program3.o
gcc program3.o -o program3
program3.o: program3.c
gcc -c program3.c
clean:
rm program1.o program1 program2.o program2 program3.o program3
当我运行 Makefile 时,它只生成程序 1 的文件,这是我在运行 Makefile 时得到的 output:
make: 'program1' is up to date.
make
在没有其他 arguments 的情况下构建第一个目标,传递参数以构建特定目标,或添加第一行使可执行文件成为规则的依赖项以默认构建它们。
all: program1 program2 program3
Mark Tolonen 回答了您的问题,但您可以采取一些措施来解决这个问题。
make
有许多隐式(内置)规则来处理这样的基本内容——你不需要编写显式规则来从一个单独的 C 文件构建可执行文件, make
已经知道如何做到这一点。 您的 makefile 实际上可以像
#
# The CC variable specifies what compiler should be used by the implicit rule
#
CC=gcc
all: program1 program2 program3
就是这样。 如果要为编译器指定参数,可以使用CFLAGS
变量:
CC=gcc
CFLAGS=-std=c11 -pedantic -Wall -Werror
all: program1 program2 program3
所以要构建一个单独的程序,你输入make program1
或make program2
。 要构建所有三个,只需键入make
或make all
。
如果“单独编译”的意思是您希望能够一次编译一个,那么您可以使用所需的目标调用 makefile,如下所示:
~$ make program2
或者
~$ make program3
默认情况下,make 调用 makefile 中的第一个目标
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.