From: Boyuan Yang Date: Fri, 8 Nov 2024 08:03:55 -0500 Subject: CMakeLists.txt: Apply SONAME and multiarch --- CMakeLists.txt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b81f43..3f2b945 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,9 +5,11 @@ include(CheckCSourceCompiles) project ( YUV C CXX ) # "C" is required even for C++ projects -cmake_minimum_required( VERSION 2.8.12 ) +cmake_minimum_required( VERSION 3.2 ) option( UNIT_TEST "Built unit tests" OFF ) +include(GNUInstallDirs) + set ( ly_base_dir ${PROJECT_SOURCE_DIR} ) set ( ly_src_dir ${ly_base_dir}/source ) set ( ly_inc_dir ${ly_base_dir}/include ) @@ -188,6 +190,10 @@ endif() add_executable ( cpuid ${ly_base_dir}/util/cpuid.c ) target_link_libraries ( cpuid ${ly_lib_static} ) +# Debian-specific: for library version, use ${YUV_VERSION} +include ( CM_linux_packages.cmake ) +set_target_properties( ${ly_lib_shared} PROPERTIES VERSION ${YUV_VERSION} SOVERSION 0 ) + # this creates the conversion tool add_executable ( yuvconvert ${ly_base_dir}/util/yuvconvert.cc ) target_link_libraries ( yuvconvert ${ly_lib_static} ) @@ -246,10 +252,10 @@ endif() # install the conversion tool, .so, .a, and all the header files -install ( TARGETS yuvconvert DESTINATION bin ) -install ( TARGETS ${ly_lib_static} DESTINATION lib ) -install ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib ) -install ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include ) +install ( TARGETS yuvconvert DESTINATION ${CMAKE_INSTALL_BINDIR} ) +install ( TARGETS ${ly_lib_static} DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +install ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION bin ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +install ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) # create the .deb and .rpm packages using cpack include ( CM_linux_packages.cmake )