Here list some makefile as references.
api_service:
cp -b ~/code/newapi/build/api_service .
api_service.tar.gz: api_service so_files
@mkdir -p so_files
cp api_service so_files
cd so_files; tar -caf ../$@ *
CODE_ROOT := ~/code/newapi
LIBPATH := $(CODE_ROOT)/3rd-modules/libs
DEPEND_SO := libodbc.so libunwind.so libtcmalloc.so libbson-1.0.so libmongoc-1.0.so libpq.so
# PACKAGE_SO := $(addprefix so_files/,$(DEPEND_SO))
so_files:
@mkdir -p so_files
@for so in $(DEPEND_SO); do \
tmp=$$(find $(LIBPATH) -type f -name "$$so*" -print); \
lnk=$$(basename $$tmp | sed 's/\(lib.*\.so\.[0-9]\)\(\.[0-9]\)\+/\1/'); \
cp $$tmp so_files/$$lnk; \
done
runtime_so_alias:
@for so in $(DEPEND_SO); do \
tmp=$$(find $(LIBPATH) -type f -name "$$so*" -print); \
lnk=$$(basename $$tmp | sed 's/\(lib.*\.so\.[0-9]\)\(\.[0-9]\)\+/\1/'); \
ln -sf $$tmp $$lnk; \
done
clean_so_alias:
@for so in $(DEPEND_SO); do \
find -type l -name "$$so*" -exec $(RM) {} \; ; \
done
clean:
$(RM) api_service
-$(RM) api_service.tar.gz
-$(RM) so_files
.PHONY: clean clean_so_alias so_files runtime_so_alias
see also 202308261504make基础