diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index 4d37b09b08..597ff783c0 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -2205,6 +2205,11 @@ bool HandlePackageInfoMode(std::vector const& args, cmInstallGenerator::MessageLevel message = cmInstallGenerator::SelectMessageLevel(helper.Makefile); + // Tell the global generator about any installation component names + // specified + helper.Makefile->GetGlobalGenerator()->AddInstallComponent( + ica.GetComponent()); + // Create the export install generator. helper.Makefile->AddInstallGenerator( cm::make_unique( diff --git a/Tests/RunCMake/InstallPackageInfo/Component-stdout.txt b/Tests/RunCMake/InstallPackageInfo/Component-stdout.txt new file mode 100644 index 0000000000..67ffa8ae31 --- /dev/null +++ b/Tests/RunCMake/InstallPackageInfo/Component-stdout.txt @@ -0,0 +1 @@ +-- COMPONENTS='Unspecified;cps' diff --git a/Tests/RunCMake/InstallPackageInfo/Component.cmake b/Tests/RunCMake/InstallPackageInfo/Component.cmake new file mode 100644 index 0000000000..e83a6fd39a --- /dev/null +++ b/Tests/RunCMake/InstallPackageInfo/Component.cmake @@ -0,0 +1,6 @@ +add_library(foo INTERFACE) + +install(TARGETS foo EXPORT foo DESTINATION .) +install(PACKAGE_INFO foo DESTINATION cps EXPORT foo COMPONENT cps) +get_cmake_property(components COMPONENTS) +message(STATUS "COMPONENTS='${components}'") diff --git a/Tests/RunCMake/InstallPackageInfo/RunCMakeTest.cmake b/Tests/RunCMake/InstallPackageInfo/RunCMakeTest.cmake index 82c0d904d3..475394218f 100644 --- a/Tests/RunCMake/InstallPackageInfo/RunCMakeTest.cmake +++ b/Tests/RunCMake/InstallPackageInfo/RunCMakeTest.cmake @@ -38,6 +38,7 @@ run_cmake(DependsMultipleDifferentSets) # Test functionality run_cmake(Appendix) +run_cmake(Component) run_cmake(InterfaceProperties) run_cmake(Metadata) run_cmake(ProjectMetadata)