#cmake #shared-libraries #versioning
#cmake #общие библиотеки #управление версиями
Вопрос:
В обоих numpy
и h5py
двоичные общие объекты помечаются как хэшем , так и версией ABI. Например, если вы pip install h5py
, вы можете видеть:
ls lib/python3.9/site-packages/h5py.libs libaec-9c9e97eb.so.0.0.10 libhdf5-346dbfc8.so.200.1.0 libhdf5_hl-84bfe2a0.so.200.0.1 libsz-090daab4.so.2.0.1
Я хотел бы создать общий объект, помеченный с использованием этой схемы в CMake. Я попробовал следующее:
set_target_properties(foo PROPERTIES VERSION ${HASH} SOVERSION ${ABI_VERSION})
Однако, если ${HASH}
и ${ABI_VERSION}
не совпадают, это просто создает серию символических ссылок, где foo.so -gt; foo.so.ABI_VERSION -gt; foo.so.HASH
, что отличается от более сложной стратегии, используемой h5py.
Можно ли этого достичь в CMake?
Комментарии:
1. Я не проверял это сам, но использование
suffix
целевых свойств и и (LIBRARY_
)OUTPUT_NAME
может дать желаемые результаты. Кстати: добавление расширения файла к имени вашей цели-это имхо не очень хорошая идеяset_target_properties(foo PROPERTIES OUTPUT_NAME "libfoo-${HASH}" SUFFIX ".so.${ABI_VERSION}")