Portál AbcLinuxu, 30. dubna 2025 15:25
software/ ├── libdfmt │ ├── include │ │ └── devices.h │ ├── libdfmt.a │ ├── libdfmt.h │ ├── obj │ │ ├── devices.o │ │ └── libdfmt.o │ └── src │ ├── devices.c │ ├── libdfmt.c │ ├── libdfmt.c.autosave │ └── makefile ├── libdfmt.config ├── libdfmt.creator ├── libdfmt.creator.user ├── libdfmt.files ├── libdfmt.includes ├── Makefile ├── software.pro └── software.pro.user
Knihovna libdfmt má .c soubory v src/ .o v obj/ a hlavičky include/ Hlavička s exportovanými funkcemi je a knihovna je v kořeni (složka libdfmt)
Makefile jsme se snažil v rámci svých schopností udělat univerzální. jednoduše předpokládá že každému .c v src odpovídá .o v obj. Každý jeden objekt má v prerekvizitách všechny hlavičkové soubory. To sice není ideální, ale vzhledem k rozsáhlosti projektu je to jedno.
IDIR =../include ODIR=../obj NAME=libdfmt CC=gcc CFLAGS=-Wall -Werror -I$(IDIR) -I/usr/include/libusb-1.0/ LIBS= -lusb-1.0 DEPS = ../libdfmt.h $(wildcard $(IDIR)/*.h) OBJ = $(patsubst %.c,%.o,$(wildcard *.c)) VPATH = $(ODIR) ../ .PHONY: all all: static %.o: %.c $(DEPS) mkdir -p $(ODIR) $(CC) -c -o $(ODIR)/$@ $< $(CFLAGS) .PHONY: static static: $(OBJ) ar rsc ../$(NAME).a $(patsubst %, $(ODIR)/%, $(OBJ)) .PHONY: clean clean: rm -vf $(ODIR)/*.o *~ core $(INCDIR)/*~ $(NAME).a
(Odsazování je nutné provádět pomocí tabulátorů nikoliv mezer)
V případě importu projektu s vlastním makefilem je zbytečné vytvářet multiprojekt. V nápovědě k importování projektu se píše, že se creator použije pouze jako editor a kluci vývojářští se toho drží ve smyslu, že takto nevznikne plnohodnotný projekt, který se dá použít jako závislost k jinému (dá se obejít). Nicméně do adresáře s projektem se vám nasáčkuje pár souborů. Proto jsem při importu vybral složku s projektem o úroveň níž.
Soubory:
libdfmt/include/ libdfmt/ /usr/include/libusb-1.0/
Aby fungovala buildovací tlačítka creatoru je třeba změnit build directory u projektu na cestu do složky s makefilem (src).Hlavně to upravit u správného projektu.
Pokud současně píšu jak knihovnu tak další projekt, který ji využívá, je dobré v nastavení druhého projektu přidat jako první bod kompilace volání make knihovny.
Tiskni
Sdílej:
Pokud současně píšu jak knihovnu tak další projekt, který ji využívá, je dobré v nastavení druhého projektu přidat jako první bod kompilace volání make knihovny.
Především je dobré knihovnu a další projekt zcela oddělit a vydávat a kompilovat samostatně. Pak není třeba řešit, že v jednom chcete Make a v druhém něco klikacího.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.