melchi45 / live555

live555 cmake build script
http://www.live555.com/liveMedia/
GNU Lesser General Public License v3.0
18 stars 6 forks source link

Link error when using DLL on windows #3

Closed JmyL closed 1 year ago

JmyL commented 1 year ago

All the object fiiles are opened to be linked.

I've checked it like below.

include(CMakePrintHelpers)
cmake_print_properties(TARGETS live555 PROPERTIES INTERFACE_LINK_LIBRARIES)

Result is below.

Properties for TARGET live555:
  live555.INTERFACE_LINK_LIBRARIES = "UsageEnvironment;groupsock;BasicUsageEnv
ironment;liveMedia;EpollTaskScheduler"

To hide the object files, you should link object libraries like below.

add_library(live555 SHARED 
    $<TARGET_OBJECTS:UsageEnvironment> 
    $<TARGET_OBJECTS:groupsock>
    $<TARGET_OBJECTS:BasicUsageEnvironment>
    $<TARGET_OBJECTS:liveMedia>
    $<TARGET_OBJECTS:EpollTaskScheduler>
)
target_include_directories(live555 INTERFACE
    $<TARGET_PROPERTY:UsageEnvironment,INTERFACE_INCLUDE_DIRECTORIES>
    $<TARGET_PROPERTY:groupsock,INTERFACE_INCLUDE_DIRECTORIES>
    $<TARGET_PROPERTY:BasicUsageEnvironment,INTERFACE_INCLUDE_DIRECTORIES>
    $<TARGET_PROPERTY:liveMedia,INTERFACE_INCLUDE_DIRECTORIES>
    $<TARGET_PROPERTY:EpollTaskScheduler,INTERFACE_INCLUDE_DIRECTORIES>
)