В большинстве случаев решаю несколькими проектами в одном
воркспейсе и externals. Есть общие файлы, есть индивидуальные. Меня
больше проблем доставляют не технические проблемы исходников, а
организационные. Красиво сделанные проекты, использующие общие
практически неизменяемые ресурсы, неуклонно расползаются из-за
заказчика, который не заинтересован в поддержке "магистрального
пути". В результате существуют несколько ревизий общих файлов,
которые в свою очередь могут ветвиться потому что заказчик говорит - мне вот в этой версии чуть подправить... Если взять последнюю ревизию общих файлов - это значит брать ответственность за работоспособность на себя, париться с тестированием. Не окупается.