Files
2025-06-06 16:15:07 +08:00

81 lines
2.0 KiB
Makefile

# Makefile generico per applicazione
#
# Variabili:
# APPS lista delle applicazioni
# OBJS lista degli oggetti
# QOBJS lista degli oggetti QT
# LIBS librerie
#
# Ogni applicazione viene linkata con tutti gli oggetti
export VERBOSE
ifeq ($(LINUX),1)
CPPFLAGS+=-DLINUX
endif
APPLICATIONS= $(foreach a, $(APPS),$(BINDIR)/$(a))
all: $(APPLICATIONS)
PACKAGE=$(notdir $(shell pwd))
.SECONDARY: $(OBJS) $(QOBJS)
.PHONY: all clean copy doc
$(QOBJS): %.o: %.cpp moc_%.cpp
@$(MESSAGE) "Compiling (QT) $@"
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(QT_INCLUDE) $(CXXFLAGS) -c $< -o $@"
moc_%.cpp: %.h
@$(MESSAGE) "Generating MOC $@"
@$(PRETTY) "$(MOC) -i $< -o $@"
# Generazione degli oggetti
%.o: %.cpp
@$(MESSAGE) "Compiling $@"
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@"
# Generazione delle applicazioni
$(BINDIR)/%: %.cpp $(OBJS) $(QOBJS)
@$(MESSAGE) "Linking application `basename $@`"
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OBJS) $(QOBJS) $< -L$(LIBDIR) $(LIBS) -o $@"
#Regole per la generazione di tabelle o altri file creati automaticamente
table_%.cpp: gen_table_%
@$(MESSAGE) "Generating $@"
@$(PRETTY) "./$< > $@"
gen_table_%: gen_table_%.cpp
@$(MESSAGE) "Generating $@"
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@"
#Regole per la generazione delle dipendenze
OBJDEPS=$(foreach module,$(basename $(OBJS) $(QOBJS)),$(module).d)
$(OBJDEPS): %.d: %.cpp # ci va o no? %.h
@$(MESSAGE) "Generating dependecies $@"
@$(PRETTY) "$(CXX) $(CPPFLAGS) -MM -MG -MF $@ $<"
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),copy)
-include $(OBJDEPS)
endif
endif
doc:
rm -rf doc/$(PACKAGE)
ifeq ($(strip $(DOCTITLE)),)
kdoc -L doc -d doc/$(PACKAGE) -n "Package $(PACKAGE) (lib$(PACKAGE).so)" $(HEADERS)
else
kdoc -L doc -d doc/$(PACKAGE) -n "$(DOCTITLE) (lib$(PACKAGE).so)" $(HEADERS)
endif
clean:
@$(MESSAGE) "Cleaning $(PACKAGE)"
@$(PRETTY) "rm -f *.d *.o moc_*.cpp *.d core *~ table_*.cpp gen_table*[^.][^c][^p][^p] $(APPLICATIONS)"
@$(PRETTY) "rm -rf doc/$(PACKAGE)"
copy: clean
tar -C .. -cvzf `date +../$(PACKAGE)-%d%b%y.tgz` $(PACKAGE)