Во многих отношениях ваш вопрос слишком неопределенный, чтобы отвечать. Вам нужно будет описать больше того, что вы имеете в виду. Кроме всего прочего, если вы используете интегрированную среду разработки (IDE), то, что вы делаете, должно быть сильно окрашено тем, что IDE рекомендует вам делать. (Борьба с вашей IDE контрпродуктивна; я просто никогда не нашел IDE, которая не заставляет меня хотеть бороться с ней.)
Однако для типичного проекта в Linux вы создадите каталог для хранения материалов. Для небольшого проекта (до нескольких тысяч строк кода в нескольких, скажем, 5-20) файлах вам может не потребоваться больше структуры, чем один каталог. Для более крупных проектов вы будете разделять подразделы проекта на отдельные подкаталоги в главном каталоге проекта.
В зависимости от ваших механизмов сборки, у вас может быть один make-файл в верхней части иерархии проекта (или единственный каталог в «иерархии»). Это соответствует статье «Рекурсивное создание считается вредным» (П. Миллер). В качестве альтернативы вы можете создать отдельный make-файл для каждого подкаталога, а make-файл верхнего уровня просто координирует сборки между каталогами.
Вы также должны учитывать, какую систему контроля версий (VCS) вы будете использовать.