KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am doing a project which is growing pretty fast and keeping the object files up date is no option. The problem beyond wildcard command lies somewhere between "I do not want recursive makefiles" and "I do not want it to list by hand". The objects are supposed to go into a separate directory, which works already. Note: I am not that used to makefiles, I know the basics, but everything beyond... So my question: How to scan a src folder recursively and do that in a smart manner? I already did it with multiple SRC variables but that's ugly and clutters the whole makefile with an increasing number of directories. What I currently use is: OS = Linux VERSION = 0.0.1 CC = /usr/bin/gcc CFLAGS = -Wall -g -D_REENTRANT -DVERSION=\"$(VERSION)\" LDFLAGS = -lm `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` BUILDDIR = build SOURCEDIR = src HEADERDIR = src SOURCES = $(wildcard $(SOURCEDIR)/*.c) OBJECTS = $(patsubst $(SOURCEDIR)/%.c, $(BUILDDIR)/%.o, $(SOURCES)) NAME = cinnamon BINARY = cinnamon.bin ECHO = echo RM = rm -rf MKDIR = mkdir INSTALL = install .PHONY: all clean setup all: $(BINARY) $(BINARY): $(BUILDDIR)/$(OBJECTS) $(CC) $(CFLAGS) $(LDFLAGS) -I$(HEADERDIR) -I$(SOURCEDIR) $(OBJECTS) -o $(BINARY) $(BUILDDIR)/%.o: $(SOURCEDIR)/%.c $(CC) $(CFLAGS) $(LDFLAGS) -I$(HEADERDIR) -I$(SOURCEDIR) -c $< -o $@ setup: $(MKDIR) -p $(BUILDDIR) install: $(INSTALL) -m 755 -o 0 -g 0 -d $(DESTDIR)/usr/local/bin/ $(INSTALL) -m 755 -o 0 -g 0 $(BINARY) $(DESTDIR)/usr/local/bin/$(BINARY) $(INSTALL) -m 755 -o 0 -g 0 -d $(DESTDIR)/usr/local/$(NAME)/ui/ $(INSTALL) -m 644 -o 0 -g 0 ./ui/*.ui $(DESTDIR)/usr/local/$(NAME)/ui/ # $(INSTALL) -m 755 -o 0 -g 0 -d $(DESTDIR)/usr/local/$(NAME)/model/ # $(INSTALL) -m 644 -o 0 -g 0 ./model/*.model $(DESTDIR)/usr/local/$(NAME)/model/ clean: $(RM) $(BINARY) $(OBJECTS) distclean: clean help: @$(ECHO) "Targets:" @$(ECHO) "a
Tags (comma-separated)
Save Edits
Cancel