菜鸟问题在这里。
我有一个包含很多 .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。 c
、div.c
和 fmax.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/