Re: Организовать оптимально make файл
От: vnp  
Дата: 04.06.13 17:26
Оценка:
Здравствуйте, LowCoder, Вы писали:

LC>Вопрос гуру make – как организовать правильно (так что би через 20 лет было не стыдно) make файл для следующего:

LC>Есть три проекта с++. Все они лежат в общей папочке. Один из проектов как бы главный и использует остальные два. Остальные два могут собираться в своих папочках в основном для исполнения UNIT тестов. Однако главная цель таки собрать основной проект для 32 и 64 платформ. Вопрос как лучше поступить — сделать основной Makefile в общей папочке и держать в каждой подпапочке свой Makefile и основной Makefile просто будет инклюдить все остальные и можно ожидать что они будут последовательно исполнятся. Хотя как я понял цель all может быть только одна и если мы инклюдим в один файл три других то будет ругань со стороны make что мол цель all должна быть одна.

LC>Либо сделать общий для всех проектов Makefile там определить цель all и в одном файле прописывать все зависимости. В этом случае у нас проект получается жесткой структуры – все завсит от одного файла, страдает модульнось.


LC>Посоветуйте как сделать именно правильно. Что бы бабушка гордилась

LC>Еще вдогонку — проект должен быть под 32 и 64 — как лучше поступить — сделать специальную цель для скажем 32 если я ожидаю, что большинство будет строить под 64 или держать два Makefile каждый для своей платформы в отдельных подпапках или как? Или скрипты специальные строительные сделать...

Прежде всего, all должна строить действительно all: все три проекта, в вариантах 32, 64, debug и release. В скобках: никто не обязывает называть дефолтную цель именно так.

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

В-третьих, никакого смысла в отдельных мейкфайлах для 32 и 64 нет.

PS: если сможете описать структуру проектов поподробнее, помощь будет поконкретнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.