libdshowcapture icon indicating copy to clipboard operation
libdshowcapture copied to clipboard

Make libdshowcapture.dll installable

Open Ybalrid opened this issue 2 years ago • 4 comments

Description

This changes add an install target to the main CMakeLists.txt. It will install the .lib, .dll and necessary header files to the location set by CMAKE_INSTALL_PREFIX (standard practice for CMake projects)

Motivation and Context

This allows building this library in a form that is very easy to consume for 3rd party projects.

How Has This Been Tested?

  • clone this
  • run configuration with cmake or cmake-gui
  • optionally set CMAKE_INSTALL_PREFIX to a non default directory (if not, it put it in C:\Program Files\<project name>
  • optionally set CMAKE_DEBUG_POSTFIX to allow installing both Release and Debug symbols
  • Build the project, e.g.: with Visual Studio
  • Build the INSTALL sub project

Types of changes

  • Tweak (non-breaking change to improve existing functionality)

Checklist:

  • [x] My code has been run through clang-format. No C++ changes!
  • [x] I have read the contributing document.
  • [x] My code is not on the master branch.
  • [x] The code has been tested.
  • [x] All commit messages are properly formatted and commits squashed where appropriate.
  • [x] I have included updates to all appropriate documentation.

Ybalrid avatar Mar 07 '23 19:03 Ybalrid

There is no documentation to update about building this library, so I am not sure what to do about "all appropriate documentation" In the contribution checklist

Ybalrid avatar Mar 07 '23 19:03 Ybalrid

@PatTheMav @gxalpha sorry for the ping, just wanted to bring your attention about this. This is just a minimal change to the CMake files ot allow outputting the DLL easier

Ybalrid avatar Jun 05 '23 14:06 Ybalrid

I don't think this is the correct approach:

The headers are contained in subdirectories, but PUBLIC_HEADER does not support directory structures - it will take all the files specified in the list and copy them into the CMAKE_INCLUDE_DIR in a flattened fashion. The subdirectories are lost.

This will only work if the library (and its consumers) include the headers without any expectation of subdirectories, i.e. #include <IVideoCaptureFilter.h>.

If the headers in subdirectories are not actually public headers, they in turn should not be added as such.

PatTheMav avatar Jun 05 '23 15:06 PatTheMav

I'll take a closer look at how these headers are actually installed here, I have been using the output of a cmake install from that script in a project without issues so I probably have missed the flattening of the directories

Ybalrid avatar Jun 16 '23 12:06 Ybalrid