cmake: export targets in config files #2800
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR reworks Notcurses' CMake package configuration to provide logical targets (
Notcurses::NotcursesCore
,Notcurses::Notcurses
,Notcurses::Notcurses++
), following modern CMake conventions, while retaining the previously exported variables for compatibility.The names of these targets match the proposed Conan recipe targets (conan-io/conan-center-index#4036), allowing developers to use the same target names when the Conan recipe is eventually resolved.
Alias targets have also been added to allow superbuilds (using Notcurses as a git submodule) with the same target names.
Looking into the git history, I can see that Notcurses did at one point export logical targets (#1146), which was later reverted (#1149), since it broke compatibility by not defining variables like before.
This PR fixes that by splitting the logical targets generated by CMake into
Notcurses*Targets.cmake
files, with theNotcurses*Config.cmake
files importing those and also providing the original variables for compatibility.I've tested these changes both using find_package and config files, and using add_subdirectory and a git submodule. Please verify on your end and let me know if any adjustments are needed.