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

Method MergeCompileData

Source/cmFileAPICodemodel.cxx:1621–1671  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1619}
1620
1621CompileData Target::MergeCompileData(CompileData const& fd)
1622{
1623 CompileData cd;
1624 cd.Language = fd.Language;
1625 if (cd.Language.empty()) {
1626 return cd;
1627 }
1628 CompileData const& td = this->CompileDataMap.at(cd.Language);
1629
1630 // All compile groups share the sysroot of the target.
1631 cd.Sysroot = td.Sysroot;
1632
1633 // All compile groups share the precompile headers of the target.
1634 cd.PrecompileHeaders = td.PrecompileHeaders;
1635
1636 // All compile groups share the language standard of the target.
1637 cd.LanguageStandard = td.LanguageStandard;
1638
1639 // Use target-wide flags followed by source-specific flags.
1640 cd.Flags.reserve(td.Flags.size() + fd.Flags.size());
1641 cd.Flags.insert(cd.Flags.end(), td.Flags.begin(), td.Flags.end());
1642 cd.Flags.insert(cd.Flags.end(), fd.Flags.begin(), fd.Flags.end());
1643
1644 // Use source-specific includes followed by target-wide includes.
1645 cd.Includes.reserve(fd.Includes.size() + td.Includes.size());
1646 cd.Includes.insert(cd.Includes.end(), fd.Includes.begin(),
1647 fd.Includes.end());
1648 cd.Includes.insert(cd.Includes.end(), td.Includes.begin(),
1649 td.Includes.end());
1650
1651 // Use source-specific frameworks followed by target-wide frameworks.
1652 cd.Frameworks.reserve(fd.Frameworks.size() + td.Frameworks.size());
1653 cd.Frameworks.insert(cd.Frameworks.end(), fd.Frameworks.begin(),
1654 fd.Frameworks.end());
1655 cd.Frameworks.insert(cd.Frameworks.end(), td.Frameworks.begin(),
1656 td.Frameworks.end());
1657
1658 // Use target-wide defines followed by source-specific defines.
1659 cd.Defines.reserve(td.Defines.size() + fd.Defines.size());
1660 cd.Defines.insert(cd.Defines.end(), td.Defines.begin(), td.Defines.end());
1661 cd.Defines.insert(cd.Defines.end(), fd.Defines.begin(), fd.Defines.end());
1662
1663 // De-duplicate defines.
1664 std::stable_sort(cd.Defines.begin(), cd.Defines.end(),
1665 JBT<std::string>::ValueLess);
1666 auto end = std::unique(cd.Defines.begin(), cd.Defines.end(),
1667 JBT<std::string>::ValueEq);
1668 cd.Defines.erase(end, cd.Defines.end());
1669
1670 return cd;
1671}
1672
1673Json::ArrayIndex Target::AddSourceCompileGroup(cmSourceFile* sf,
1674 Json::ArrayIndex si)

Callers 1

DumpCompileGroupMethod · 0.95

Calls 8

reserveMethod · 0.80
eraseMethod · 0.80
emptyMethod · 0.45
atMethod · 0.45
sizeMethod · 0.45
insertMethod · 0.45
endMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected