diff --git a/Source/cmPackageInfoReader.cxx b/Source/cmPackageInfoReader.cxx index 0c71727333..a3e973e76c 100644 --- a/Source/cmPackageInfoReader.cxx +++ b/Source/cmPackageInfoReader.cxx @@ -472,7 +472,11 @@ std::unique_ptr cmPackageInfoReader::Read( reader->ComponentTargets = parent->ComponentTargets; reader->DefaultConfigurations = parent->DefaultConfigurations; } else { - reader->DefaultConfigurations = ReadList(reader->Data, "configurations"); + for (std::string const& config : + ReadList(reader->Data, "configurations")) { + reader->DefaultConfigurations.emplace_back( + cmSystemTools::UpperCase(config)); + } } return reader; @@ -664,6 +668,12 @@ cmTarget* cmPackageInfoReader::AddLibraryComponent( // Create the imported target. cmTarget* const target = makefile->AddImportedTarget(name, type, false); + // Set default configurations. + if (!this->DefaultConfigurations.empty()) { + target->SetProperty("IMPORTED_CONFIGURATIONS", + cmJoin(this->DefaultConfigurations, ";"_s)); + } + // Set target properties. this->SetTargetProperties(makefile, target, data, package, {}); auto const& cfgData = data["configurations"]; @@ -671,12 +681,6 @@ cmTarget* cmPackageInfoReader::AddLibraryComponent( this->SetTargetProperties(makefile, target, *ci, package, IterKey(ci)); } - // Set default configurations. - if (!this->DefaultConfigurations.empty()) { - target->SetProperty("IMPORTED_CONFIGURATIONS", - cmJoin(this->DefaultConfigurations, ";"_s)); - } - return target; } diff --git a/Tests/FindPackageCpsTest/CMakeLists.txt b/Tests/FindPackageCpsTest/CMakeLists.txt index 561d401f17..88015e6372 100644 --- a/Tests/FindPackageCpsTest/CMakeLists.txt +++ b/Tests/FindPackageCpsTest/CMakeLists.txt @@ -267,3 +267,20 @@ elseif(TARGET TransitiveDep::Target4) elseif(TARGET TransitiveDep::Target5) message(SEND_ERROR "TransitiveDep::Target5 exists ?!") endif() + +############################################################################### +# Test default configurations. + +find_package(DefaultConfigurationsTest) +if(NOT DefaultConfigurationsTest_FOUND) + message(SEND_ERROR "DefaultConfigurationsTest not found !") +elseif(NOT TARGET DefaultConfigurationsTest::Target) + message(SEND_ERROR "DefaultConfigurationsTest::Target missing !") +else() + get_property(dct_configs + TARGET DefaultConfigurationsTest::Target PROPERTY IMPORTED_CONFIGURATIONS) + if(NOT "${dct_configs}" STREQUAL "DEFAULT;TEST") + message(SEND_ERROR "DefaultConfigurationsTest::Target has wrong configurations '${dct_configs}' !") + endif() + set(dct_configs) +endif() diff --git a/Tests/FindPackageCpsTest/cps/DefaultConfigurationsTest.cps b/Tests/FindPackageCpsTest/cps/DefaultConfigurationsTest.cps new file mode 100644 index 0000000000..24e99ea528 --- /dev/null +++ b/Tests/FindPackageCpsTest/cps/DefaultConfigurationsTest.cps @@ -0,0 +1,16 @@ +{ + "cps_version": "0.13", + "name": "DefaultConfigurationsTest", + "cps_path": "@prefix@/cps", + "configurations": [ "Default" ], + "components": { + "Target": { + "type": "interface", + "configurations": { + "Test": { + "includes": [ "@prefix@/include" ] + } + } + } + } +}