[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