реклама на сайте
подробности

 
 
> Автомэйк в GCC, как заставить компилировать все исходники
MrYuran
сообщение Jun 29 2009, 12:57
Сообщение #1


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Есть такой мэйкфайл:
Код
SRC = \
main/main.c \
main/process_MB.c \
measure/measure.c \
measure/temperature.c \
utils/utils.c \
...
# Define all object files.
#
OBJ = $(SRC:.c=.o)

Вроде бы нетрудно перечислить все файлы проекта, но их становится со временем всё больше, потом начинаются тасования из проекта в проект...
И вот вроде попадалось где-то на глаза, что мэйк может сам найти все исходники и построить все зависимости.

Вопрос: как это сделать?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Legotron
сообщение Jun 29 2009, 13:13
Сообщение #2


инопланетянин
***

Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832



Выделяем папки:
Код
MODULES := ../src \
              ../inc \
          ../src/scmRTOS/Common \
          ../src/scmRTOS/AVR \

Пример зависимости: *.o от *.с
Код
$(OBJDIR)/%.o : %.c
       echo ====  Compiling {:content:}lt;; \
       $(CC) -c $(CFLAGS) $(addprefix -I,$(INCDIRS)) \
       -Wa,-ahlmsd=$(LSTDIR)/$(notdir $(<:.c=.lst)) {:content:}lt; -o $@

Этого вполне хватает... вообще посмотрите как написаны чужие мэйк-файлы(например scmRTOS) и погуглите "makefile" или посмотрите по форуму.. существует весьма доходчивая литература в т.ч. на русском

Отредактировал: Только сейчас понял что вы хотели, к сожалению, не знаю можно ли это делать или нет, но думаю что смысла в этом нет, ибо исходники лучше хранить с мэйк-файлом вместе и никуда их не терять и не разбрасывать smile.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 29 2009, 15:20
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Legotron @ Jun 29 2009, 16:13) *
Выделяем папки:
Ищем в них все исходники, формируем из их имен имена объектников и указываем vpath искать исходники для этих объектников в папках, ну а дальше зависимость .o от .c, .cpp, .S:
Код
SRCDIRS = . $(addprefix $(PROJ_SRCTOP)/,$(MODULES))
CSRC    = $(wildcard $(addsuffix /*.c,$(SRCDIRS)))
CPPSRC    = $(wildcard $(addsuffix /*.cpp,$(SRCDIRS)))
ASRC    = $(wildcard $(addsuffix /*.s,$(SRCDIRS)))
## Objects that must be built in order to link
OBJ = $(addprefix $(OBJDIR)/,$(notdir $(CSRC:.c=.o) $(CPPSRC:.cpp=.o) $(ASRC:.s=.o) ))

# search path for common sources and headers
vpath
vpath %.c $(SRCDIRS)
vpath %.cpp $(SRCDIRS)
vpath %.h $(SRCDIRS)
vpath %.s $(SRCDIRS)

## Compile
$(OBJDIR)/%.o: %.c
    @echo Compiling: $<
    $(CC) $(INCLUDES) $(CFLAGS) -Wa,-ahlmsd=$(LSTDIR)/$(notdir $(<:.c=.lst)) -c  $< -o $@
$(OBJDIR)/%.o: %.cpp
    @echo Compiling: $<
    $(CC) $(INCLUDES) $(CFLAGS) -Wa,-ahlmsd=$(LSTDIR)/$(notdir $(<:.cpp=.lst)) -c  $< -o $@
$(OBJDIR)/%.o: %.S
    @echo Assembling: $<
    $(CC) $(INCLUDES) $(ASMFLAGS) -Wa,-ahlmsd=$(LSTDIR)/$(notdir $(<:.S=.lst)) -c  $< -o $@


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MrYuran   Автомэйк в GCC   Jun 29 2009, 12:57
- - andrew_b   make -B ?   Jun 29 2009, 13:00
|- - MrYuran   Цитата(andrew_b @ Jun 29 2009, 17:00) mak...   Jun 29 2009, 13:11
|- - MrYuran   Цитата(andrew_b @ Jun 29 2009, 17:00) mak...   Jun 30 2009, 06:47
|- - Сергей Борщ   Цитата(MrYuran @ Jun 30 2009, 09:47) Что-...   Jun 30 2009, 07:05
||- - MrYuran   Цитата(Сергей Борщ @ Jun 30 2009, 11:05) ...   Jun 30 2009, 07:13
||- - Сергей Борщ   Цитата(MrYuran @ Jun 30 2009, 10:13) Тоже...   Jun 30 2009, 07:53
||- - MrYuran   Цитата(Сергей Борщ @ Jun 30 2009, 11:53) ...   Jun 30 2009, 08:40
||- - Сергей Борщ   Цитата(MrYuran @ Jun 30 2009, 11:40) Не н...   Jun 30 2009, 09:30
|- - andrew_b   Цитата(MrYuran @ Jun 30 2009, 10:47) Приш...   Jun 30 2009, 07:33
|- - MrYuran   Цитата(Legotron @ Jun 29 2009, 17:13) .. ...   Jun 29 2009, 13:29
- - MrYuran   А что такое PROJ_SRCTOP ? Корень проекта?   Jun 30 2009, 05:19
- - MrYuran   Спасибо огромное, заработало!!! правда...   Jun 30 2009, 10:02
- - Doka   MrYuran http://www.gnu.org/software/automake/manua...   Jul 3 2009, 07:38
- - MrYuran   Цитата(Doka @ Jul 3 2009, 11:38) Спасибо...   Jul 3 2009, 08:30
- - AHTOXA   Цитата(MrYuran @ Jul 3 2009, 14:30) Спаси...   Jul 3 2009, 08:44
- - MrYuran   Цитата(AHTOXA @ Jul 3 2009, 12:44) Наверн...   Jul 3 2009, 08:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 14:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.0151 секунд с 7
ELECTRONIX ©2004-2016