c - 如何编写 "selective"Makefile?

标签 c makefile gnu-make

菜鸟问题在这里。

我有一个包含很多 .c 文件的目录,它们基本上是我自己编写的 libc 函数,作为练习。

我在这些文件中写了一些 main() 来测试功能,我想写一个 Makefile 允许我只编译我想测试的文件,例如:

make memset.c

并且只获取memset.c中编写的代码的可执行文件。

我试着做这样的事情:

CC = gcc
CFLAGS = -Wall -Wextra -pedantic

all : %.o
    $(CC) $(CFLAGS) $<
%.o : %.c
    $(CC) $(CFLAGS) $< -c -o $@

但是显然不行。我不知道用什么来代替“全部”。 我知道这是非常基础的,但我没能做到,我做了研究但没有找到这个具体问题的答案。

预先感谢您的帮助。

最佳答案

如果您执行 make -n -p,您将获得 make 中所有内置规则的转储。在 GNU Make 4.1 中,这包括:

%: %.o
#  recipe to execute (built-in):
        $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@

因此,您可能只需要在当前拥有 all 的 makefile 中添加一个 %

您也可能会发现您不需要那些已经内置的规则。假设您有三个 C 文件,每个文件都有您指定的 main():abs。 cdiv.cfmax.c。您的 Makefile 不能超过两行:

CFLAGS = -Wall -Wextra -pedantic
all: abs div fmax

这将允许您执行 make abs 以使 abs 可执行,并且 make all 使它们全部。

关于c - 如何编写 "selective"Makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690776/

相关文章:

c - 短字符串的哈希函数

python - python-config 可能存在 BUG?!使用 --ldflags 时它不会打印完整路径

build - bmake的优点

c - 如何根据用户输入检查文件是否存在于C中

c++ - 是否可以删除信号

objective-c - Sizeof short——寻找最小值

android - 如何在一个android.mk文件中生成两个.so文件

c++ - 更改 Eclipse CDT 项目的输出目录

makefile - 模式规则中的通配符

makefile,处理多个文件