Здравствуйте, 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: если сможете описать структуру проектов поподробнее, помощь будет поконкретнее.