From a20e9569f11dc62e625f17e9470aeea1872d63a5 Mon Sep 17 00:00:00 2001 From: "F. Pichot" Date: Mon, 22 Sep 2025 14:54:06 +0800 Subject: [PATCH] install(PACKAGE_INFO): Record COMPONENT in global COMPONENTS list Fixes: #27249 --- Source/cmInstallCommand.cxx | 5 +++++ Tests/RunCMake/InstallPackageInfo/Component-stdout.txt | 1 + Tests/RunCMake/InstallPackageInfo/Component.cmake | 6 ++++++ Tests/RunCMake/InstallPackageInfo/RunCMakeTest.cmake | 1 + 4 files changed, 13 insertions(+) create mode 100644 Tests/RunCMake/InstallPackageInfo/Component-stdout.txt create mode 100644 Tests/RunCMake/InstallPackageInfo/Component.cmake 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)