Есть ли способ использовать GNU Make для компиляции всех файлов C в каталоге в отдельные программы, причем каждая программа называется исходным файлом без расширения .c?
Скомпилировать все файлы C в каталоге в отдельные программы
Ответ 1
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
Ответ 2
Я не думаю, что вам даже нужен make файл - по умолчанию подразумеваемые правила make должны делать это:
$ ls
src0.c src1.c src2.c src3.c
$ make `basename -s .c *`
cc src0.c -o src0
cc src1.c -o src1
cc src2.c -o src2
cc src3.c -o src3
Отредактировано, чтобы сделать командную строку немного проще.
Ответ 3
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o [email protected] $<
clean:
rm -f $(PROGS)
Улучшение ответа Мартина Бродхерста, добавив "чистую" цель. "make clean" очистит все исполняемые файлы.
Ответ 4
@MartinBroadhurst Привет У меня есть запрос в вашем домене. Не могли бы вы поделиться чатом для обсуждения. Мне нужна помощь в проекте, над которым вы работали.