[CMake] Adding a reference to Windows Media Player library using CMake + CSharp support

Cyril Boucher cyril.boucher94260 at gmail.com
Sun Mar 11 14:08:21 EDT 2018


Hi all,

I figured I would dig up this question as I found a decent solution to this
issue.

After having a look at how Microsoft Visual Studio is doing to include
references to external libraries, I came to realise that it is using a tool
called TlbImp, which is short for Type Library Importer.

The solution is pretty simple from there: use TlbImp to generate a library
that CSharp will be able to import and add it via CMake to the project. My
code for Windows Media Player boils down to this:

set(_outLib ${CMAKE_CURRENT_BINARY_DIR}/generated/Interop.WMPLib.dll)
execute_process(COMMAND ${TLBIMP_EXECUTABLE} ${WMP_LIBRARY}
/namespace:WMPLib /out:${_outLib}
RESULT_VARIABLE tlbimp_result
ERROR_FILE ${CMAKE_CURRENT_BINARY_DIR}/tlbimp_log.txt
)

set_target_properties(myproject
VS_DOTNET_REFERENCES "WMPLib"
VS_DOTNET_REFERENCEPROP_WMPLib_TAG_HintPath "${_outLib}"
)

And there you have it!

If you would like to see it used in a project, I have just uploaded a small
project to my github that uses just that: https://github.com/
cyrilBoucher/space-invaders

Hope this helps!
Cyril Boucher

2018-02-01 21:57 GMT+01:00 Cyril Boucher <cyril.boucher94260 at gmail.com>:

> Hi all,
>
> I am trying to use CMake and the CSharp support for a small project of
> mine but I cannot seem to find a way to add a reference to the Windows
> Media Player library. One of the reason for that is that I need to link my
> project to wmp.dll which then needs to generate Interop.WMPLib.dll and a
> reference needs to be added with its path pointing to the latter library.
>
> Adding wmp.dll to my project is as simple as a target_link_libraries call
> but this does not seem to trigger the whole generation and add reference
> sort of process.
>
> Has anyone ever had an experience with adding such libraries? Is there
> support for these scenarios?
>
> Thanks!
> Cyril Boucher
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180311/8f762e7a/attachment.html>


More information about the CMake mailing list