MCPcopy Create free account
hub / github.com/Kitware/CMake / HandleImportCommand

Function HandleImportCommand

Source/cmCMakePkgConfigCommand.cxx:1003–1038  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1001 BIND_POPULATE(ImportArguments).Bind("NAME"_s, &ImportArguments::Name);
1002
1003bool HandleImportCommand(std::vector<std::string> const& args,
1004 cmExecutionStatus& status)
1005{
1006 std::vector<std::string> unparsed;
1007 auto parsedArgs = ImportParser.Parse(args, &unparsed);
1008
1009 std::string prefix =
1010 parsedArgs.Prefix ? cmStrCat(*parsedArgs.Prefix, "_"_s) : "";
1011
1012 auto foreign_name =
1013 cmStrCat("@foreign_pkgcfg::", prefix, *parsedArgs.Package);
1014 auto local_name =
1015 cmStrCat("PkgConfig::", parsedArgs.Name.value_or(*parsedArgs.Package));
1016 auto found_var = cmStrCat("PKGCONFIG_", *parsedArgs.Package, "_FOUND");
1017
1018 auto& mf = status.GetMakefile();
1019
1020 if (mf.FindTargetToUse(local_name)) {
1021 mf.AddDefinition(found_var, "TRUE");
1022 return true;
1023 }
1024
1025 if (!mf.FindTargetToUse(foreign_name, cmStateEnums::TargetDomain::FOREIGN)) {
1026 auto result = PopulatePCTarget(parsedArgs, status);
1027 if (!result.second) {
1028 mf.AddDefinition(found_var, "FALSE");
1029 return result.first;
1030 }
1031 }
1032
1033 mf.AddDefinition(found_var, "TRUE");
1034 auto* tgt = mf.AddImportedTarget(
1035 local_name, cmStateEnums::TargetType::INTERFACE_LIBRARY, false);
1036 tgt->AppendProperty("INTERFACE_LINK_LIBRARIES", foreign_name);
1037 return true;
1038}
1039
1040} // namespace
1041

Callers

nothing calls this directly

Calls 8

PopulatePCTargetFunction · 0.85
FindTargetToUseMethod · 0.80
AddImportedTargetMethod · 0.80
cmStrCatFunction · 0.70
ParseMethod · 0.45
GetMakefileMethod · 0.45
AddDefinitionMethod · 0.45
AppendPropertyMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…