В последнее время я мало занимался программированием на C, но недавно я повторно посетил старый проект и обнаружил, что старый Makefile для сборки библиотеки под FreeBSD больше не работает.Вот очень упрощенная версия Makefile, которая раньше работала:
TEST = Test
LIBTEST = lib$(TEST).a
CC = cc
.PRECIOUS: $(LIBTEST)
all: $(LIBTEST)
LIBSRC = test.c
# Do not automatically delete library source files
.SECONDARY: $(LIBSRC)
LIBOBJ = $(LIBSRC:%.c=%.o)
$(LIBTEST): $(LIBTEST)($(LIBOBJ))
$(AR) $(ARFLAGS) $@ $?
rm -f $?
clean:
@rm -f *.o $(LIBTEST)
И вот тривиальная программа на C, подходящая для этого:
/* test.c */
#include <stdio.h>
int
test(char const *text)
{
printf("%s\n", text);
return 1;
}
Это похоже на зависимость директивы Makefile:
$(LIBTEST): $(LIBTEST)($(LIBOBJ))
больше не работает.Это приводит к:
ar -crD libTest.a
rm -f
Я безуспешно просматривал «создание человека».
Одна вещь, которая озадачивает меня, это то, что «создание человека» говорит: «Для более подробного описанияmake и makefiles, пожалуйста, обратитесь к PMake - A Tutorial. "
Это точно?У меня сложилось впечатление, что pmake был заменен на bsdmake в последних версиях FreeBSD - это источник моих проблем?
Примечание: меня не интересуют ответы, которые сводятся к "вы можете сделатьэто просто прекрасно с использованием GNU make "- это вопрос для FreeBSD make.