Господа, подскажите по использованию makefile Как заставить makefile выполнить мою цель hetfiles до того как он выполнит директиву include? Единственный видимый мне вариант: дважды запускать make, один раз с целью hetfiles, второй раз с целью all, и добавить цель hetfiles в игнорирование создания зависимостей. Можно ли сделать это, вызвав make один раз?
Ситуация: мне нужно запустить het ассемблер (который из .het файла сделает .c и .h файлы) до того как будет выполнена директива include. Директива необходима для разрешения зависимостей.
NODEPS:=clean
# используется find из пакета cygwin для поиска исходников
FIND:=C:\cygwin64\bin\find
#Find all the C/C++ files in the project directory
C_SOURCES := $(shell $(FIND) src -name "*.c")
#These are the dependency files, which make will clean up after it creates them
DEPFILES:=$(C_SOURCES:.c=.d)
DEPFILES:=$(patsubst src/%,obj/%,$(DEPFILES))
OBJECTS:=$(patsubst src/%,obj/%,$(C_SOURCES))
OBJECTS:=$(patsubst %.c,%.o,$(OBJECTS))
CC:=D:\Keil\ARM\ARMCC\bin\armcc.exe
OPTFLAGS:=-O0
CPUFLAGS:=-c --cpu Cortex-R4F -g --apcs=interwork
CCFLAGS:=$(CPUFLAGS) $(OPTFLAGS) -D__little_endian__ -Iinclude
DEPFLAGS:=$(CPUFLAGS) -M -Iinclude --depend_format=unix_escaped --depend_single_line --no_depend_system_headers
LDFLAGS:=$(CPUFLAGS) --strict --entry=_c_int00 --summary_stderr --info summarysizes --map --callgraph\
--info sizes --info totals --info veneers
#Don't create dependencies when we're cleaning, for instance
ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS))))
#Chances are, these files don't exist. GMake will create them and
#clean up automatically afterwards
-include $(DEPFILES)
endif
.PHONY: all
all: hetfiles obj/tst.axf
@echo Done!
#This is the rule for creating the dependency files
obj/%.d: src/%.c Makefile
@echo Compiling C file $< for dependency. Out file $@
@if not exist obj mkdir obj
$(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst src/%.c,obj/%.o,$<)'
#This rule does the compilation C files
obj/%.o: src/%.c obj/%.d Makefile
@echo Compiling C file $<. Out file $@
@if not exist obj mkdir obj
$(CC) $(CCFLAGS) $< -o $@
# для компиляции файла N2HET и копирования полученных файлов в каталоги проекта
hetfiles: n2het-uart/HET_EMU_SCI/HET_EMU_SCI/HET_EMU_SCI.het
"D:\Texas Instruments\Hercules\HET\bin\hetp.exe" -hc32 -n0 -v2 $<
C:\cygwin64\bin\cp $(patsubst %.het,%.h,$<) include
C:\cygwin64\bin\cp $(patsubst %.het,%.c,$<) src
obj/tst.axf: $(DEPFILES) $(OBJECTS) Makefile
$(LD) $(LDFLAGS) $(OBJECTS) --scatter memmap.sct --list "$(patsubst %.axf,%.map,$@)" -o $@
.PHONY: clean
clean:
del /q obj\*