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

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Cyril Boucher
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

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: Adding a reference to Windows Media Player library using CMake + CSharp support

Cyril Boucher
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 <[hidden email]>:
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


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake