Эй, народ, кто как делает? (#include файлы и пути) Пока каждый проект жил сам по себе (т.е. на одном железе один проект) и только было немного общего для всех (ну там crc16.c,crc16.h, какие-то h-файлы манипуляции с битами, маски 7-сегментных символов), то все исходники конкретного проекта лежали в одном каталоге, всё общее лежало где-то в каталоге common и бралось оттуда.
Сейчас как-то сразу вылезло несколько проектов, живущих "группами" на железках и довольно много общего не только внутри железки, но и между проектами вообще. Да ещё и под cvs это всё заталкивается. Поэтому удобно организовывать проект в виде типа
src/projdir - тут сидит makefile проекта и пути отсчитываются отсюда
src/c_lib/crc16
src/c_lib/vbits
src/eunit
src/cp-m8-bios
и т.п.
При этом возможны два варианта (у Quartus-а один, поэтому с ним такой вопрос не возникал).
1) можно в include-путях для с-компилятора указать . (т.е. src/projdir/) и .. (т.е. src/) и везде писать
#include "c_lib/crc16/crc16.h"
#include "c_lib/vbits/vbits.h"
#include "cp-m8-bios/bios.h"
#include "eunit/packets.h"
2) можно сделать INCDIRS = $(SRCDIRS) и тогда
#include "crc16.h"
#include "vbits.h"
#include "bios.h"
#include "packets.h"
Первый вариант вроде бы прозрачнее в плане "откуда взяли это", но зато во втором в случае замены
src/c_lib/crc16
на оптимизированную под платформу реализацию
src/c_lib/avr/crc16
не придётся менять #include по всему проекту.
Кто что скажет за/против каждого варианта?