Ключевые слова:makefile, example, (найти похожие документы)
Date: Mon, 21 Jan 2002 21:44:37 +0000 (UTC)
From: Anton Kovalenko <a_kovalenko@fromru.com>
Newsgroups: fido7.ru.linux
Subject: Создание автоматизированного Make-сценария.
AP> Hy это как сказать. Мейкфайл-то он не генеpит.
Ну вот. Зачем тебе генерить мейкфайл?
Или ты считаешь, что туда надо прописывать каждый файл в твоем проекте?
Вот тебе шаблон:
---
#!/usr/bin/make -f
SOURCES := $(wildcard *.c)
OBJECTS = $(SOURCES:.c=.o)
PROJNAME = $(notdir $(PWD))
BINARY= $(PROJNAME)
$(BINARY): $(OBJECTS)
$(CC) $(LDFLAGS) -o $@ $(OBJECTS)
# а здеся мы генерим зависимости от заголовков
include $(SOURCES:.c=.d)
%.d: %.c
gcc -MM -MG $< \
| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
[ -s $@ ] || rm -f $@
clean:
rm -f *.d *.o
.PHONY: clean
# дальше было много интересного, но уже лично для меня:
# автогенерация заголовков, документации и т.д.
---
Что же мы видим, товарищи, на примере этой модели? А видим мы Makefile,
который можно взять и положить в любой каталог со свалкой исходников.
Имя бинарника будет совпадать с именем каталога такого "проекта".
Дополнительные библиотеки и каталоги для include можешь вписать в
начало файла ( LDFLAGS= -lлиба -lеще CFLAGS= -Iкаталог -Iеще ).
Этим, собственно, "подстройка" под новый проект на первых порах
и ограничится.
Теперь вопрос: что тут генерить? То есть среда разработки должна
догадаться, что какая-то либа или .h-ка лежат в
/home/vasya/test/libs/new/(libs|include)? Покажи мне такую среду, и я
откушу себе голову.
А все остальное хотя бы вышеприведенный Makefile (мое наколенное творчество
эпохи раннего rtfm'а) "подхватит" сам.
Если ты собираешься писать что-нибудь сложнее
того, для чего такого "мейкфайла" хватает, тогда все равно придется
rtfm: info make, info autoconf, info libtool.
Ну и, конечно, научиться программировать. И, когда у тебя
make poslat_nachalniku_ishodnik будет делать то, что отражено
в имени target'а, заодно решится проблема, чем лучше работать с файлами:
с файлами лучше _вообще не работать_, на это есть система. А
если приходится гонять файлики вручную, без разницы, чем ты это
делаешь: mc или cp, mv, rm...
Хочется работать по-старинке - возьми какую-нибудь ide типа
anjuta, vide или (censored) kdevelop, и генери себе makefile
сколько угодно. Только не пытайся потом доказывать, что это, типа,
удобнее - над тобой смеяться будут...
--
Удачи!
Антон Коваленко /* http://softlenin.chat.ru */.