I just happen to notice that how symbolic links are created for library with soname.
libtool creates both symlinks to the real library file.
But CMake creates one symlink to the real file and another symlink to the first symlink.
I'm sticking with manual Makefile but which way should I follow?
Thanks.
# my make script
define makever
@ $(MAKE) -C $@ soname=lib$@.so.$(word 1,$(subst ., ,$(1)))
@ cp $@/$@ $@/lib$@.so.$(1)
@ ( cd $@; \
ln -f -s lib$@.so.$(1) lib$@.so.$(word 1,$(subst ., ,$(1))) ; )
@ ( cd $@; \
ln -f -s lib$@.so.$(1) lib$@.so ; )
endef
---
Method 1: Autotools (libtool)
$ ls -l src/foo/.libs/
total 28
lrwxrwxrwx 1 ljh ljh 12 Jan 1 03:29 libfoo.la -> ../libfoo.la
-rw-r--r-- 1 ljh ljh 3512 Jan 1 03:29 libfoo_la-foo.o
-rw-r--r-- 1 ljh ljh 916 Jan 1 03:29 libfoo.lai
lrwxrwxrwx 1 ljh ljh 15 Jan 1 03:29 libfoo.so -> libfoo.so.5.2.3
lrwxrwxrwx 1 ljh ljh 15 Jan 1 03:29 libfoo.so.5 -> libfoo.so.5.2.3
-rwxr-xr-x 1 ljh ljh 16480 Jan 1 03:29 libfoo.so.5.2.3
$
Method 2: CMake
$ ls -l foo/
total 32
drwxr-xr-x 3 ljh ljh 4096 Jan 1 03:56 CMakeFiles
-rw-r--r-- 1 ljh ljh 1254 Jan 1 03:56 cmake_install.cmake
lrwxrwxrwx 1 ljh ljh 11 Jan 1 03:56 libfoo.so -> libfoo.so.1
lrwxrwxrwx 1 ljh ljh 15 Jan 1 03:56 libfoo.so.1 -> libfoo.so.1.2.3
-rwxr-xr-x 1 ljh ljh 15368 Jan 1 03:56 libfoo.so.1.2.3
-rw-r--r-- 1 ljh ljh 7605 Jan 1 03:51 Makefile
$