makefile - How to create directory if needed? -


i'm trying use makefile, problem have directory, src directory , makefile. use tmp directory have create. has object files in it. , performance, try not delete these when debugging. if create rule tmp create it, rebuilds c files. how this?

there number of ways. depends on version of make you're using , operating system you're using.

the 1 thing must never use directory simple prerequisite. rules filesystem uses update modified time on directories not work make.

for simple make on posix system, can pre-create directory in rule perform compilation:

obj/foo.o: foo.c         @ mdkir -p obj         $(cc) $(cppflags) $(cflags) -c -o $@ $< 

if have gnu make have 2 options. simplest 1 force directory created when makefile read in before else happens, adding line this:

_dummy := $(shell mkdir -p obj) 

the easy, fast, , reliable. downside directory created always, if it's not needed. nevertheless way it.

the fancy way, if have new-enough gnu make, use order-only prerequisites:

obj/foo.o: foo.c | obj         $(cc) $(cppflags) $(cflags) -c -o $@ $<  obj:         mkdir -p $@ 

this forces obj target built before obj/foo.o target, but timestamp on obj ignored when determining whether obj/foo.o out of date.


Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -