Re: How to adding pathes to dependencies in rules of `.d` files

"ljh" <[email protected]>
Newsgroups gmane.comp.gnu.make.general
Message-ID <[email protected]>
Hi Paul,

I finally work it out. 

Thank you very much for the great help.



$ tree --charset C
.
|-- foo
|   |-- foo.c
|   |-- foo.h
|   `-- Makefile
|-- main
|   |-- main.c
|   `-- Makefile
|-- Makefile
`-- objdir_tmp
    |-- foo
    |   |-- foo
    |   |-- foo.d
    |   |-- foo.o
    |   |-- libfoo.so -&gt; /home/ljh/Documents/hello_makefile_OutOfSRC/src//objdir_tmp/foo/libfoo.so.6.2.3
    |   |-- libfoo.so.6 -&gt; /home/ljh/Documents/hello_makefile_OutOfSRC/src//objdir_tmp/foo/libfoo.so.6.2.3
    |   `-- libfoo.so.6.2.3
    `-- main
        |-- main
        |-- main.d
        `-- main.o

5 directories, 15 files
$ 


# Makefile for top dir

export OBJDIR = $(dir $(realpath $(lastword $(MAKEFILE_LIST))))/objdir_tmp

# $(call version_number,1.2.3)
# major.minor.patch
# libtool manual 4.2: -version-number
define version_number
	$(MAKE) -C $@ [email protected].$(word 1,$(subst ., ,$(1)))
	cp $(OBJDIR)/$@/$@ $(OBJDIR)/$@/[email protected].$(1)
	cd $(OBJDIR)/$@; ln -f -s $(OBJDIR)/$@/[email protected].$(1) $(OBJDIR)/$@/[email protected].$(word 1,$(subst ., ,$(1))); cd ..
	cd $(OBJDIR)/$@; ln -f -s $(OBJDIR)/$@/[email protected].$(1) $(OBJDIR)/$@/[email protected]; cd ..
endef

SUBDIRS = main foo

all : $(SUBDIRS)
install : $(SUBDIRS)

main : foo
main : ; $(MAKE) -C $@
foo : ; $(call version_number,6.2.3)

# make DESTDIR=~/foo install
install :
	install -d "$(DESTDIR)/usr/local/bin"
	install -d "$(DESTDIR)/usr/local/lib"
	install -m 0755 $(OBJDIR)/main/main "$(DESTDIR)/usr/local/bin"
	install -m 0755 $(OBJDIR)/foo/*.so* "$(DESTDIR)/usr/local/lib"

clean : ; -rm -fr $(OBJDIR)

.PHONY : $(SUBDIRS) all install clean
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.