Всем привет.
У меня такой вопрос. Я работаю с проектом,который написан на С++ и подгнан работать с разными операционными системами: 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.
и опять тот же Вопрос: Что я делаю не правильно?
Спасибо.
LinuxForum.Fans
Работа с makefile
Автор: rostushka
5 сообщений
1544 просмотров
А можно по-конкретнее? Просто можно ли меня направить на то,что я не читаю. Я почитаю и не буду задавать вопросы,если они кажутся глупыми.
Проблема решена
Поздравляю, вы изобрели autotools.
А можно по-конкретнее?
Хотя сейчас обычно и принято генерировать Makefile'ы автоматически, голый make вполне пригоден для небольших проектов, но при этом его желательно хорошо знать...
Так что всё же стоит рассмотреть использование cmake или autotools, но синтаксис и как работает make ИМХО всё равно подучить придётся...
Вопрос: Что я делаю не правильно?
заходить в поддиректорию надо так:
$(MAKE) -C subdir
http://www.gnu.org/software/make/manual/make.html#Recursion
на будущее: код, текст скритов и выводы команд намного информативнее сбивчевого словестного описания проблемы...
Войдите или зарегистрируйтесь, чтобы ответить.