c - 使用一个 Makefile 从不同的文件生成不同的可执行文件

标签 c makefile executable

我有三个用 C 写的文件:

a.c, b.c, d.c

我想用一个 Makefile 从它们生成独立的可执行文件,像这样:

a.x, b.x d.x. 

它们不需要彼此运行。它们是完全不同的程序。

我知道,我可以写一行来编译它们中的每一个,像这样:

gcc -Wall -Werror a.c -o a.x
gcc -Wall -Werror b.c -o b.x
gcc -Wall -Werror d.c -o d.x

但我正在寻找一种更简单的解决方案来独立于文件数量来执行此操作,因为将来我将拥有很多文件。

我有一个看起来像这样的原件:

CC = gcc
CFLAGS = -g -Wall - Werror -03
%.x:%.c
    ${CC} {CFLAGS} -o $@ $<
clean: 
    rm -f *.o

但我不知道如何自定义它,以便它读取我的每个 c 文件并从每个文件生成一个 x 文件。

谢谢

最佳答案

你试过添加

全部:a.x b.x c.x

在你的 makefile 前面?

all: a.x b.x c.x

CC = gcc
CFLAGS = -g -Wall - Werror -03
%.x:%.c
    ${CC} {CFLAGS} -o $@ $<
clean: 
    rm -f *.o

编辑:要构建目录中的所有 .c 文件,请尝试

all: $(*.c:.c=.x)

我对 Make 很生疏,所以这可能不太正确......你应该阅读 Make 文档。

编辑 2:确实那是不对的......这更有可能工作:

SRCS = *.c

all: $(SRCS:.c=.x)

或者

SRCS = *.c
PGMS = $(SRCS:.c=.x)

all: $PGMS

关于c - 使用一个 Makefile 从不同的文件生成不同的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15866049/

相关文章:

c - TCP套接字,发送文件,客户端服务器,服务器不保存整个文件,C语言

C - 分号的返回值是多少?

python - 如何使没有py扩展名的python文件运行

python - 运行使用 folium 的可执行文件时,Branca Python 模块无法找到 2 个必要的 json 文件

linux - ./executable 和 . 之间的区别可执行的

c - getchar() 时输入回车键;被执行

c - 作业 : In C, 如何仅使用指针获取数组的子串?

c - make 找不到 sys/signal.h

c++ - MakeFile:强制目录下的所有文件包含标题

c++ - 在带有 makefile 的 C++ 代码中使用 C 库