diff --git a/CMakeLists.txt b/CMakeLists.txt index c7e6830a..7ef1ea8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,15 @@ project(exiv2 # use TWEAK to categorize the build LANGUAGES C CXX ) +# Shared Object versioning (SemVer-like: must bump major on API breakage) +if(PROJECT_VERSION_MAJOR EQUAL 0) + # support legacy scheme (e.g. 0.27.x -> 27) + set(EXIV2LIB_SOVERSION ${PROJECT_VERSION_MINOR}) +else() + # restart from 30 + math(EXPR EXIV2LIB_SOVERSION "30 + (${PROJECT_VERSION_MAJOR} - 1)") +endif() + if(NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE Release) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bc3c18c0..41a672e8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -160,7 +160,7 @@ endif() set_target_properties( exiv2lib PROPERTIES VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION_MINOR} + SOVERSION ${EXIV2LIB_SOVERSION} OUTPUT_NAME exiv2 PDB_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMPILE_FLAGS ${EXTRA_COMPILE_FLAGS}