diff --git a/Source/cmPackageInfoReader.cxx b/Source/cmPackageInfoReader.cxx index a3e973e76c..3d20c4844f 100644 --- a/Source/cmPackageInfoReader.cxx +++ b/Source/cmPackageInfoReader.cxx @@ -212,7 +212,7 @@ std::string NormalizeTargetName(std::string const& name, std::string const& context) { if (cmHasLiteralPrefix(name, ":")) { - return cmStrCat(context, name); + return cmStrCat(context, ':', name); } std::string::size_type const n = name.find_first_of(':'); diff --git a/Tests/FindPackageCpsTest/CMakeLists.txt b/Tests/FindPackageCpsTest/CMakeLists.txt index d85c7ca349..574f5a7b9f 100644 --- a/Tests/FindPackageCpsTest/CMakeLists.txt +++ b/Tests/FindPackageCpsTest/CMakeLists.txt @@ -175,6 +175,14 @@ else() target_link_libraries(defs-test defs::defs) endif() +############################################################################### +# Test importing and mangling of requirements (i.e. link libraries). + +find_package(RequiresTest CONFIG REQUIRED) + +add_library(requires-test STATIC requires-test.cxx) +target_link_libraries(requires-test RequiresTest::Indirect) + ############################################################################### # Test importing of (language-specific) include paths. diff --git a/Tests/FindPackageCpsTest/cps/RequiresTest.cps b/Tests/FindPackageCpsTest/cps/RequiresTest.cps new file mode 100644 index 0000000000..736e25c827 --- /dev/null +++ b/Tests/FindPackageCpsTest/cps/RequiresTest.cps @@ -0,0 +1,19 @@ +{ + "cps_version": "0.13", + "name": "RequiresTest", + "cps_path": "@prefix@/cps", + "components": { + "Indirect": { + "type": "interface", + "requires": [ ":Direct" ] + }, + "Direct": { + "type": "interface", + "definitions": { + "*": { + "ANSWER": 42 + } + } + } + } +} diff --git a/Tests/FindPackageCpsTest/requires-test.cxx b/Tests/FindPackageCpsTest/requires-test.cxx new file mode 100644 index 0000000000..39d649c357 --- /dev/null +++ b/Tests/FindPackageCpsTest/requires-test.cxx @@ -0,0 +1,7 @@ +#ifndef ANSWER +# error ANSWER is not defined +#else +# if ANSWER != 42 +# error ANSWER has the wrong value +# endif +#endif