This might be a patch that works if the library is found via pkgconfig but not 
via cmake

--- mediastreamer2-4.4.21.orig/src/CMakeLists.txt
+++ mediastreamer2-4.4.21/src/CMakeLists.txt
@@ -495,12 +495,16 @@ if(ENABLE_STATIC)
        )
 endif()
 if(ENABLE_SHARED)
-       add_library(mediastreamer SHARED ${MEDIASTREAMER2_HEADER_FILES} 
${SOURCE_FILES_ALL})
-       set_target_properties(mediastreamer PROPERTIES LINKER_LANGUAGE CXX)
+       add_library(mediastreamer_base SHARED ${MEDIASTREAMER2_HEADER_FILES} 
${BASE_SOURCE_FILES_C})
+       set_target_properties(mediastreamer_base PROPERTIES LINKER_LANGUAGE CXX)
+       add_library(mediastreamer_voip SHARED ${MEDIASTREAMER2_HEADER_FILES} 
${VOIP_SOURCE_FILES_ALL})
+       set_target_properties(mediastreamer_voip PROPERTIES LINKER_LANGUAGE CXX)
        if(LINK_FLAGS_STR)
-               set_target_properties(mediastreamer PROPERTIES LINK_FLAGS 
"${LINK_FLAGS_STR}")
+               set_target_properties(mediastreamer_base PROPERTIES LINK_FLAGS 
"${LINK_FLAGS_STR}")
+               set_target_properties(mediastreamer_voip PROPERTIES LINK_FLAGS 
"${LINK_FLAGS_STR}")
        endif()
-       add_dependencies(mediastreamer ${MS2_DEPENDENCIES})
+       add_dependencies(mediastreamer_base ${MS2_DEPENDENCIES})
+       add_dependencies(mediastreamer_voip ${MS2_DEPENDENCIES})
        if(APPLE)
                if(IOS)
                        set(MIN_OS ${LINPHONE_IOS_DEPLOYMENT_TARGET})
@@ -526,14 +530,21 @@ if(ENABLE_SHARED)
                endif()
        else()
                # Do not version shared library on Android
-               set_target_properties(mediastreamer PROPERTIES SOVERSION 
${MEDIASTREAMER_SO_VERSION})
+               set_target_properties(mediastreamer_base PROPERTIES SOVERSION 
${MEDIASTREAMER_SO_VERSION})
+               set_target_properties(mediastreamer_voip PROPERTIES SOVERSION 
${MEDIASTREAMER_SO_VERSION})
         endif()
-       target_include_directories(mediastreamer INTERFACE
+       target_include_directories(mediastreamer_base INTERFACE
                $<INSTALL_INTERFACE:include/>
                $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/>
                PRIVATE ${MEDIASTREAMER2_INCLUDE_DIRS}
        )
-        target_link_libraries(mediastreamer PRIVATE ${LINK_LIBS})
+       target_include_directories(mediastreamer_voip INTERFACE
+               $<INSTALL_INTERFACE:include/>
+               $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/>
+               PRIVATE ${MEDIASTREAMER2_INCLUDE_DIRS}
+       )
+        target_link_libraries(mediastreamer_base PRIVATE ${LINK_LIBS})
+        target_link_libraries(mediastreamer_voip PRIVATE ${LINK_LIBS})
        if(IOS)
                target_link_libraries(mediastreamer INTERFACE "-framework 
Foundation" "-framework AVFoundation")
        endif()
@@ -545,7 +556,14 @@ if(ENABLE_SHARED)
                        )
                endif()
        endif()
-       install(TARGETS mediastreamer EXPORT ${EXPORT_TARGETS_NAME}Targets
+       install(TARGETS mediastreamer_base EXPORT ${EXPORT_TARGETS_NAME}Targets
+               RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+               LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+               ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+               FRAMEWORK DESTINATION Frameworks
+               PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ 
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+       )
+       install(TARGETS mediastreamer_voip EXPORT ${EXPORT_TARGETS_NAME}Targets
                RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
                ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
--- mediastreamer2-4.4.21.orig/tools/CMakeLists.txt
+++ mediastreamer2-4.4.21/tools/CMakeLists.txt
@@ -28,7 +28,7 @@ if (IOS)
 endif()
 
 if(ENABLE_SHARED)
-       set(MS2_LIBS_FOR_TOOLS mediastreamer)
+       set(MS2_LIBS_FOR_TOOLS mediastreamer_voip mediastreamer_base)
 else()
        set(MS2_LIBS_FOR_TOOLS mediastreamer-static)
        if(XV_FOUND)
--- mediastreamer2-4.4.21.orig/cmake/Mediastreamer2Config.cmake.in
+++ mediastreamer2-4.4.21/cmake/Mediastreamer2Config.cmake.in
@@ -36,7 +36,7 @@ include(CMakeFindDependencyMacro)
 include("${CMAKE_CURRENT_LIST_DIR}/Mediastreamer2Targets.cmake")
 
 if(@ENABLE_SHARED@)
-       set(MEDIASTREAMER2_TARGETNAME mediastreamer)
+       set(MEDIASTREAMER2_TARGETNAME mediastreamer_voip mediastreamer_base)
        set(MEDIASTREAMER2_LIBRARIES ${MEDIASTREAMER2_TARGETNAME})
 else()
        set(MEDIASTREAMER2_TARGETNAME mediastreamer-static)

I don't understand how such interfaces work...

G.

I tried a simple CMakeLists.txt
project(foo)
cmake_minimum_required(VERSION 3.18)
find_package(Mediastreamer2 REQUIRED)
add_executable(main main.c)
target_link_libraries(main mediastreamer2)


but fails with:
cmake ..
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at /usr/share/Mediastreamer2/cmake/Mediastreamer2Config.cmake:68 
(get_target_property):
  get_target_property() called with non-existent target "mediastreamer".
Call Stack (most recent call first):
  CMakeLists.txt:3 (find_package)


CMake Error at /usr/share/Mediastreamer2/cmake/Mediastreamer2Config.cmake:76 
(get_target_property):
  get_target_property() called with non-existent target "mediastreamer".
Call Stack (most recent call first):
  CMakeLists.txt:3 (find_package)


-- Configuring incomplete, errors occurred!
See also "/foo/foo/CMakeFiles/CMakeOutput.log".

Reply via email to