help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: ljh
Subject: Re: How to adding pathes to dependencies in rules of `.d` files
Date: Sun, 5 Mar 2023 04:04:36 +0800

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 -> 
/home/ljh/Documents/hello_makefile_OutOfSRC/src//objdir_tmp/foo/libfoo.so.6.2.3
    |   |-- libfoo.so.6 -> 
/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 $@ soname=lib$@.so.$(word 1,$(subst ., ,$(1)))
        cp $(OBJDIR)/$@/$@ $(OBJDIR)/$@/lib$@.so.$(1)
        cd $(OBJDIR)/$@; ln -f -s $(OBJDIR)/$@/lib$@.so.$(1) 
$(OBJDIR)/$@/lib$@.so.$(word 1,$(subst ., ,$(1))); cd ..
        cd $(OBJDIR)/$@; ln -f -s $(OBJDIR)/$@/lib$@.so.$(1) 
$(OBJDIR)/$@/lib$@.so; 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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]