繁体   English   中英

如何使用 Makefile 在一个目录中编译多个单独的 C 文件?

[英]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 program1make program2 要构建所有三个,只需键入makemake all

如果“单独编译”的意思是您希望能够一次编译一个,那么您可以使用所需的目标调用 makefile,如下所示:

~$ make program2

或者

~$ make program3

默认情况下,make 调用 makefile 中的第一个目标

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM