Я давно в makefile
проекта перестал вписывать отдельные файлы. Вписываю каталоги (модули).
Например, так (это из примеров к scmRTOS):
В makefile
проектаКод
...
# project modules (directories with source files)
MODULES := ./src ../SamplesCommon
MODULES += ../scmRTOS/Common ../scmRTOS/AVR ../scmRTOS/Extensions/Profiler
...
########### you should not need to change the following lines #############
# keep order!
# avreal.make must be included after gcc-avr because of TRGPGM definition
include $(COMMON_MAKEFILES)/gcc-avr.mak
include $(COMMON_MAKEFILES)/avreal.mak
В
общем для всех проектов gcc-avr.mak
Код
...
SRCDIRS := $(MODULES)
INCDIRS := $(SRCDIRS)
CSRC := $(wildcard $(addsuffix /*.c,$(SRCDIRS)))
CPPSRC := $(wildcard $(addsuffix /*.cpp,$(SRCDIRS)))
ASRC := $(wildcard $(addsuffix /*.S,$(SRCDIRS)))
...
Т.е. все
.c .cpp .S во всех подключенных к проекту модулях подхватываются автоматически и сортируются по типу для правильного применения компилятора.
Мусора временных копий и файлов, дёрнутых из другого проекта поближе для копипастенья
Код
file.c
file-1.c
file-1a.c
file-2.c
some-file-from-another-project-not-to-compile.c
в каталоге проекта всё равно не должно быть, поэтому проще подключать каталог-модуль целиком, в том числе опционально в makefile проекта
Код
ifeq ($(USE_LPS),Y)
MODULES += ./src/modem ./src/lps
DEFS += -DUSE_LPS
p.s. одно время текущий (относительно makefile) каталог подключался автоматически, в avr-gcc.mak была точка
Код
SRCDIRS := . $(MODULES)
но потом мне это разонравилось.