【发布时间】:2014-03-30 17:42:05
【问题描述】:
我一直在学习 gnu make 和 Makefiles。当我使用许多依赖对象、头文件和源文件时,Makefile 让我的生活变得更轻松。我听说 make 可以用来做各种自动化魔术所以我很好奇我是否可以用它来将不相关的文件与不相关的主要功能编译成不相关的目标文件,并且都在同一个目录中。
这里有一些代码可以做我想做的事情:
CC=gcc
CFLAGS=-g -Wall -std=gnu99 -DNDEBUG
all:
$(CC) $(CFLAGS) file1.c -o file1
$(CC) $(CFLAGS) file2.c -o file2
$(CC) $(CFLAGS) file3.c -o file3
$(CC) $(CFLAGS) file4.c -o file4
etc...
我知道如何制作 *.c 文件的列表,然后像这样完成相应的目标文件:
TARGET=$(wildcat *.c)
OBJECTS=$(patsubst %.c,%,$(SOURCES))
但这只会分别给我一个文件列表。如何处理该列表中的单个文件,以便一次编译一个文件?
【问题讨论】:
-
您可以为每个目标文件创建依赖关系 - 然后只需
make目标文件,它就会为您创造奇迹...... -
只要
all: file1 file2 file3 file4。