LinuxForum.Fans
Тема

Работа с makefile

Автор: rostushka 5 сообщений 1544 просмотров
06.10.2014 14:08 #395212

Всем привет.

У меня такой вопрос. Я работаю с проектом,который написан на С++ и подгнан работать с разными операционными системами: Linux,Windows, ThreadX. Моя задача - процесс автоматической компиляции. Под виндой всё компилится в один исполняемый файл,но под Linuksom часть файлов должна быть скомпилирована в библиотеки и только потом в исполняемый файл,рашил работать с makefile-ами. Проект разделён логически поэтмоу в папках существуют под-папки.
Я решил добавлять в каждую папку свой makefile и вызывать его из верхнего makefile-а. Но вот проблемма. Когда я указываю(сам находясь в папке Elements.В ней же есть папка Components с сорс-файлами для папки Components):
make -f Components/subdirComponents.mk, то по логике вещей утилита make должна зайти в папку Components,определить все сорс-файлы в папке(переменная SRC=$(wildcard *.cpp)) начать процесс построения библиотеки(из этой папки должна получиться библиотека). А на деле переменная SRC получает значение всех сорс-файлов в папке Elements.
Вопрос: Что я делаю не правильно?

Если я вместо: make -f Components/subdirComponents.mk использую из той-же папки конструкцию: include Components/subdirComponents.mk, то утилита make исполняет эту инструкцию, но не прочитав файлы для переменной SRC(в папке Components),возвравается в Elements, и продолжает рабоать,но естественно падает,т.к. все сорс-файлы в переменной SRC относятся к папке Components.
и опять тот же Вопрос: Что я делаю не правильно?

Спасибо.

06.10.2014 15:25 #395220
"rostushka" написал:
Я решил добавлять в каждую папку свой makefile и вызывать его из верхнего makefile-а.

Поздравляю, вы изобрели autotools.

"rostushka" написал:
Что я делаю не правильно?

Не читаете документацию.

06.10.2014 15:29 #395221

А можно по-конкретнее? Просто можно ли меня направить на то,что я не читаю. Я почитаю и не буду задавать вопросы,если они кажутся глупыми.

06.10.2014 19:07 #395244

Проблема решена

06.10.2014 19:10 #395245
"yars" написал:
Поздравляю, вы изобрели autotools.
"rostushka" написал:
А можно по-конкретнее?

Хотя сейчас обычно и принято генерировать Makefile'ы автоматически, голый make вполне пригоден для небольших проектов, но при этом его желательно хорошо знать...
Так что всё же стоит рассмотреть использование cmake или autotools, но синтаксис и как работает make ИМХО всё равно подучить придётся...

"rostushka" написал:
Вопрос: Что я делаю не правильно?

заходить в поддиректорию надо так:
$(MAKE) -C subdir

http://www.gnu.org/software/make/manual/make.html#Recursion

на будущее: код, текст скритов и выводы команд намного информативнее сбивчевого словестного описания проблемы...

Войдите или зарегистрируйтесь, чтобы ответить.