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

Function HandleExtractCommand

Source/cmCMakePkgConfigCommand.cxx:704–796  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

702 .Bind("SYSTEM_LIBRARY_DIRS"_s, &ExtractArguments::SystemLibraryDirs);
703
704bool HandleExtractCommand(std::vector<std::string> const& args,
705 cmExecutionStatus& status)
706{
707
708 std::vector<std::string> unparsed;
709 auto parsedArgs = ExtractParser.Parse(args, &unparsed);
710 auto maybeEnv = HandleCommon(parsedArgs, status);
711
712 if (!maybeEnv) {
713 return !parsedArgs.Required;
714 }
715 auto& pcEnv = maybeEnv->first;
716 auto& imEnv = maybeEnv->second;
717
718 auto maybePackage =
719 ImportPackage(*parsedArgs.Package, parsedArgs.Version, imEnv, pcEnv);
720 if (!maybePackage) {
721 return !parsedArgs.Required;
722 }
723 auto& package = *maybePackage;
724
725 if (parsedArgs.AllowSystemIncludes) {
726 pcEnv.AllowSysCflags = *parsedArgs.AllowSystemIncludes;
727 }
728
729 if (parsedArgs.AllowSystemLibs) {
730 pcEnv.AllowSysLibs = *parsedArgs.AllowSystemLibs;
731 }
732
733 if (parsedArgs.SystemIncludeDirs) {
734 pcEnv.SysCflags = *parsedArgs.SystemIncludeDirs;
735 }
736
737 if (parsedArgs.SystemLibraryDirs) {
738 pcEnv.SysLibs = *parsedArgs.SystemLibraryDirs;
739 }
740
741 auto& mf = status.GetMakefile();
742 mf.AddDefinition("CMAKE_PKG_CONFIG_NAME", package.Name());
743 mf.AddDefinition("CMAKE_PKG_CONFIG_DESCRIPTION", package.Description());
744 mf.AddDefinition("CMAKE_PKG_CONFIG_VERSION", package.Version());
745
746 auto make_list = [&](char const* def,
747 std::vector<cmPkgConfigDependency> const& deps) {
748 std::vector<cm::string_view> vec;
749 vec.reserve(deps.size());
750
751 for (auto const& dep : deps) {
752 vec.emplace_back(dep.Name);
753 }
754
755 mf.AddDefinition(def, cmList::to_string(vec));
756 };
757
758 make_list("CMAKE_PKG_CONFIG_CONFLICTS", package.Conflicts());
759 make_list("CMAKE_PKG_CONFIG_PROVIDES", package.Provides());
760 make_list("CMAKE_PKG_CONFIG_REQUIRES", package.Requires());
761 make_list("CMAKE_PKG_CONFIG_REQUIRES_PRIVATE", package.Requires(true));

Callers

nothing calls this directly

Calls 15

HandleCommonFunction · 0.85
ImportPackageFunction · 0.85
to_stringFunction · 0.85
NameMethod · 0.80
DescriptionMethod · 0.80
VersionMethod · 0.80
reserveMethod · 0.80
emplace_backMethod · 0.80
ConflictsMethod · 0.80
ProvidesMethod · 0.80
RequiresMethod · 0.80
CflagsMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…