l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2003 Mar 21 13:05

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
[vox-tech] makefile question - auto dependencies
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vox-tech] makefile question - auto dependencies

i was playing around with auto-dependencies with makefiles the other
day.  here's a hello world example of the technique:

   TARGET = hello_world
   CFLAGS = -W -Wall -g
   OBJS   = $(patsubst %.c, %.o, $(wildcard *.c))
   SRCS   = $(wildcard *.c)
   LDLIBS = -lm
   DEPDIR = .deps
   vpath %.d ${DEPDIR}
   # Dependencies
   all:           ${TARGET}
   ${TARGET}:     ${OBJS}
   hello_world.o: hello_world.d
   functions.o:   functions.d
   # Explicit rules
   %.d: %.c
      @$(CC) -MM $(CPPFLAGS) $< > ${DEPDIR}/$@.$$$$; \
      sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < ${DEPDIR}/$@.$$$$ >
   ${DEPDIR}/$@; \
      rm -f ${DEPDIR}/$@.$$$$

sometimes i like seeing how space-efficient i can make things.  this
makefile works really well, but i'm wondering if it can be shortened.
is there a way of specifying the following:

   "the dependency of X.o is X.d where X is any file name"

so in other words, is there a way of combining the three lines:

   hello_world.o: hello_world.d
   functions.o:   functions.d
   utility.o:     utility.d

into a single line saying that all .o files depend on the corresponding
.d file?


Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D
vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Sunset Systems
Who graciously hosts our website & mailing lists!