Версионные библиотеки были хорошо интегрированы в SCons 2.3.0:
version = "1.2.3"
lib = env.SharedLib(target='name', sources, SHLIBVERSION=version)
# generates in linux:
# name.so -> name.so.1
# name.so.1 -> name.so.1.2.3
# name.so.1.2.3
installed = env.InstallVersionedLib(os.path.join(INSTALPREFIX,"lib"), lib, SHLIBVERSION=version)
# generates in linux if INSTALLPREFIX = /usr/local/lib and --install_sandbox=mysandbox given:
# mysandbox/usr/local/libname.so -> name.so.1
# mysandbox/usr/local/name.so.1 -> name.so.1.2.3
# mysandbox/usr/local/name.so.1.2.3
SCons 2.3.0 по-прежнему имеет некоторые ошибки: перестройка библиотеки завершается неудачно, поскольку создание символической ссылки опирается на os.symlink, которая завершается неудачно, еслиссылка уже существуетЭто уже исправлено в текущей версии разработки.Вы можете исправить вашу локальную версию 2.3.0, добавив следующие строки:
try : os.remove(whatever)
except OSError : pass
Всякий раз, когда os.symlink вызывается для этих файлов, являясь 'любым' вторым параметром:
/usr/lib/scons/SCons/Tool/install.py
/usr/lib/scons/SCons/Tool/__init__.py