Make libdshowcapture.dll installable
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
cmakeorcmake-gui - optionally set
CMAKE_INSTALL_PREFIXto a non default directory (if not, it put it inC:\Program Files\<project name> - optionally set
CMAKE_DEBUG_POSTFIXto allow installing both Release and Debug symbols - Build the project, e.g.: with Visual Studio
- Build the
INSTALLsub 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.
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
@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
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.
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