|
|
@@ -47,8 +47,11 @@ public:
|
|
|
: Version("1.5")
|
|
|
{
|
|
|
}
|
|
|
- void StartElement(const std::string&, const char**) { this->Data = ""; }
|
|
|
- void EndElement(const std::string& name)
|
|
|
+ void StartElement(const std::string&, const char**) override
|
|
|
+ {
|
|
|
+ this->Data = "";
|
|
|
+ }
|
|
|
+ void EndElement(const std::string& name) override
|
|
|
{
|
|
|
if (name == "key") {
|
|
|
this->Key = this->Data;
|
|
|
@@ -58,7 +61,7 @@ public:
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- void CharacterDataHandler(const char* data, int length)
|
|
|
+ void CharacterDataHandler(const char* data, int length) override
|
|
|
{
|
|
|
this->Data.append(data, length);
|
|
|
}
|
|
|
@@ -108,9 +111,8 @@ public:
|
|
|
{
|
|
|
if (this->Group) {
|
|
|
return this->Group;
|
|
|
- } else {
|
|
|
- return this->Generator->CreateString(this->String);
|
|
|
}
|
|
|
+ return this->Generator->CreateString(this->String);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -161,8 +163,9 @@ cmGlobalGeneratorFactory* cmGlobalXCodeGenerator::NewFactory()
|
|
|
cmGlobalGenerator* cmGlobalXCodeGenerator::Factory::CreateGlobalGenerator(
|
|
|
const std::string& name, cmake* cm) const
|
|
|
{
|
|
|
- if (name != GetActualName())
|
|
|
+ if (name != GetActualName()) {
|
|
|
return nullptr;
|
|
|
+ }
|
|
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
|
|
cmXcodeVersionParser parser;
|
|
|
std::string versionFile;
|
|
|
@@ -237,10 +240,9 @@ std::string cmGlobalXCodeGenerator::FindXcodeBuildCommand()
|
|
|
makeProgram = "xcodebuild";
|
|
|
}
|
|
|
return makeProgram;
|
|
|
- } else {
|
|
|
- // Use cmakexbuild wrapper to suppress environment dump from output.
|
|
|
- return cmSystemTools::GetCMakeCommand() + "xbuild";
|
|
|
}
|
|
|
+ // Use cmakexbuild wrapper to suppress environment dump from output.
|
|
|
+ return cmSystemTools::GetCMakeCommand() + "xbuild";
|
|
|
}
|
|
|
|
|
|
bool cmGlobalXCodeGenerator::SetGeneratorToolset(std::string const& ts,
|
|
|
@@ -435,18 +437,13 @@ void cmGlobalXCodeGenerator::AddExtraTargets(
|
|
|
|
|
|
// now make the allbuild depend on all the non-utility targets
|
|
|
// in the project
|
|
|
- for (std::vector<cmLocalGenerator*>::iterator i = gens.begin();
|
|
|
- i != gens.end(); ++i) {
|
|
|
- cmLocalGenerator* lg = *i;
|
|
|
- if (this->IsExcluded(root, *i)) {
|
|
|
+ for (auto& gen : gens) {
|
|
|
+ if (this->IsExcluded(root, gen)) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- const std::vector<cmGeneratorTarget*>& tgts = lg->GetGeneratorTargets();
|
|
|
- for (std::vector<cmGeneratorTarget*>::const_iterator l = tgts.begin();
|
|
|
- l != tgts.end(); l++) {
|
|
|
- cmGeneratorTarget* target = *l;
|
|
|
-
|
|
|
+ const std::vector<cmGeneratorTarget*>& tgts = gen->GetGeneratorTargets();
|
|
|
+ for (auto target : tgts) {
|
|
|
if (target->GetType() == cmStateEnums::GLOBAL_TARGET) {
|
|
|
continue;
|
|
|
}
|
|
|
@@ -472,7 +469,7 @@ void cmGlobalXCodeGenerator::AddExtraTargets(
|
|
|
cmCustomCommandLines commandLines;
|
|
|
commandLines.push_back(makeHelper);
|
|
|
std::vector<std::string> no_byproducts;
|
|
|
- lg->GetMakefile()->AddCustomCommandToTarget(
|
|
|
+ gen->GetMakefile()->AddCustomCommandToTarget(
|
|
|
target->GetName(), no_byproducts, no_depends, commandLines,
|
|
|
cmTarget::POST_BUILD, "Depend check for xcode", dir.c_str(), true,
|
|
|
false, "", false, cmMakefile::AcceptObjectLibraryCommands);
|
|
|
@@ -484,7 +481,7 @@ void cmGlobalXCodeGenerator::AddExtraTargets(
|
|
|
}
|
|
|
|
|
|
// Refer to the build configuration file for easy editing.
|
|
|
- listfile = lg->GetCurrentSourceDirectory();
|
|
|
+ listfile = gen->GetCurrentSourceDirectory();
|
|
|
listfile += "/";
|
|
|
listfile += "CMakeLists.txt";
|
|
|
target->AddSource(listfile);
|
|
|
@@ -496,9 +493,8 @@ void cmGlobalXCodeGenerator::CreateReRunCMakeFile(
|
|
|
cmLocalGenerator* root, std::vector<cmLocalGenerator*> const& gens)
|
|
|
{
|
|
|
std::vector<std::string> lfiles;
|
|
|
- for (std::vector<cmLocalGenerator*>::const_iterator gi = gens.begin();
|
|
|
- gi != gens.end(); ++gi) {
|
|
|
- std::vector<std::string> const& lf = (*gi)->GetMakefile()->GetListFiles();
|
|
|
+ for (auto gen : gens) {
|
|
|
+ std::vector<std::string> const& lf = gen->GetMakefile()->GetListFiles();
|
|
|
lfiles.insert(lfiles.end(), lf.begin(), lf.end());
|
|
|
}
|
|
|
|
|
|
@@ -558,8 +554,8 @@ void cmGlobalXCodeGenerator::SortXCodeObjects()
|
|
|
void cmGlobalXCodeGenerator::ClearXCodeObjects()
|
|
|
{
|
|
|
this->TargetDoneSet.clear();
|
|
|
- for (unsigned int i = 0; i < this->XCodeObjects.size(); ++i) {
|
|
|
- delete this->XCodeObjects[i];
|
|
|
+ for (auto& obj : this->XCodeObjects) {
|
|
|
+ delete obj;
|
|
|
}
|
|
|
this->XCodeObjects.clear();
|
|
|
this->XCodeObjectIDs.clear();
|
|
|
@@ -573,7 +569,7 @@ void cmGlobalXCodeGenerator::ClearXCodeObjects()
|
|
|
void cmGlobalXCodeGenerator::addObject(cmXCodeObject* obj)
|
|
|
{
|
|
|
if (obj->GetType() == cmXCodeObject::OBJECT) {
|
|
|
- std::string id = obj->GetId();
|
|
|
+ const std::string& id = obj->GetId();
|
|
|
|
|
|
// If this is a duplicate id, it's an error:
|
|
|
//
|
|
|
@@ -933,13 +929,11 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets(
|
|
|
typedef std::map<std::string, cmGeneratorTarget*, cmCompareTargets>
|
|
|
cmSortedTargets;
|
|
|
cmSortedTargets sortedTargets;
|
|
|
- for (std::vector<cmGeneratorTarget*>::const_iterator l = tgts.begin();
|
|
|
- l != tgts.end(); l++) {
|
|
|
- sortedTargets[(*l)->GetName()] = *l;
|
|
|
+ for (auto tgt : tgts) {
|
|
|
+ sortedTargets[tgt->GetName()] = tgt;
|
|
|
}
|
|
|
- for (cmSortedTargets::iterator l = sortedTargets.begin();
|
|
|
- l != sortedTargets.end(); l++) {
|
|
|
- cmGeneratorTarget* gtgt = l->second;
|
|
|
+ for (auto& sortedTarget : sortedTargets) {
|
|
|
+ cmGeneratorTarget* gtgt = sortedTarget.second;
|
|
|
|
|
|
std::string targetName = gtgt->GetName();
|
|
|
|
|
|
@@ -1042,9 +1036,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets(
|
|
|
sourceBuildPhase->AddAttribute("buildActionMask",
|
|
|
this->CreateString("2147483647"));
|
|
|
buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = sourceFiles.begin();
|
|
|
- i != sourceFiles.end(); ++i) {
|
|
|
- buildFiles->AddObject(*i);
|
|
|
+ for (auto& sourceFile : sourceFiles) {
|
|
|
+ buildFiles->AddObject(sourceFile);
|
|
|
}
|
|
|
sourceBuildPhase->AddAttribute("files", buildFiles);
|
|
|
sourceBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing",
|
|
|
@@ -1060,9 +1053,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets(
|
|
|
headerBuildPhase->AddAttribute("buildActionMask",
|
|
|
this->CreateString("2147483647"));
|
|
|
buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = headerFiles.begin();
|
|
|
- i != headerFiles.end(); ++i) {
|
|
|
- buildFiles->AddObject(*i);
|
|
|
+ for (auto& headerFile : headerFiles) {
|
|
|
+ buildFiles->AddObject(headerFile);
|
|
|
}
|
|
|
headerBuildPhase->AddAttribute("files", buildFiles);
|
|
|
headerBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing",
|
|
|
@@ -1079,9 +1071,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets(
|
|
|
resourceBuildPhase->AddAttribute("buildActionMask",
|
|
|
this->CreateString("2147483647"));
|
|
|
buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = resourceFiles.begin();
|
|
|
- i != resourceFiles.end(); ++i) {
|
|
|
- buildFiles->AddObject(*i);
|
|
|
+ for (auto& resourceFile : resourceFiles) {
|
|
|
+ buildFiles->AddObject(resourceFile);
|
|
|
}
|
|
|
resourceBuildPhase->AddAttribute("files", buildFiles);
|
|
|
resourceBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing",
|
|
|
@@ -1189,9 +1180,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets(
|
|
|
this->CreateString("2147483647"));
|
|
|
buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
frameworkBuildPhase->AddAttribute("files", buildFiles);
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = externalObjFiles.begin();
|
|
|
- i != externalObjFiles.end(); ++i) {
|
|
|
- buildFiles->AddObject(*i);
|
|
|
+ for (auto& externalObjFile : externalObjFiles) {
|
|
|
+ buildFiles->AddObject(externalObjFile);
|
|
|
}
|
|
|
frameworkBuildPhase->AddAttribute("runOnlyForDeploymentPostprocessing",
|
|
|
this->CreateString("0"));
|
|
|
@@ -1212,14 +1202,13 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets(
|
|
|
|
|
|
void cmGlobalXCodeGenerator::ForceLinkerLanguages()
|
|
|
{
|
|
|
- for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) {
|
|
|
+ for (auto& localGenerator : this->LocalGenerators) {
|
|
|
const std::vector<cmGeneratorTarget*>& tgts =
|
|
|
- this->LocalGenerators[i]->GetGeneratorTargets();
|
|
|
+ localGenerator->GetGeneratorTargets();
|
|
|
// All targets depend on the build-system check target.
|
|
|
- for (std::vector<cmGeneratorTarget*>::const_iterator ti = tgts.begin();
|
|
|
- ti != tgts.end(); ++ti) {
|
|
|
+ for (auto tgt : tgts) {
|
|
|
// This makes sure all targets link using the proper language.
|
|
|
- this->ForceLinkerLanguage(*ti);
|
|
|
+ this->ForceLinkerLanguage(tgt);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1240,9 +1229,8 @@ void cmGlobalXCodeGenerator::ForceLinkerLanguage(cmGeneratorTarget* gtgt)
|
|
|
|
|
|
// If the language is compiled as a source trust Xcode to link with it.
|
|
|
cmLinkImplementation const* impl = gtgt->GetLinkImplementation("NOCONFIG");
|
|
|
- for (std::vector<std::string>::const_iterator li = impl->Languages.begin();
|
|
|
- li != impl->Languages.end(); ++li) {
|
|
|
- if (*li == llang) {
|
|
|
+ for (auto const& Language : impl->Languages) {
|
|
|
+ if (Language == llang) {
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
@@ -1280,7 +1268,7 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateBuildPhase(
|
|
|
const char* name, const char* name2, cmGeneratorTarget* target,
|
|
|
const std::vector<cmCustomCommand>& commands)
|
|
|
{
|
|
|
- if (commands.size() == 0 && strcmp(name, "CMake ReRun") != 0) {
|
|
|
+ if (commands.empty() && strcmp(name, "CMake ReRun") != 0) {
|
|
|
return nullptr;
|
|
|
}
|
|
|
cmXCodeObject* buildPhase =
|
|
|
@@ -1468,7 +1456,7 @@ void cmGlobalXCodeGenerator::FilterConfigurationAttribute(
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- std::string::size_type endVariant = attribute.find("]", beginVariant + 9);
|
|
|
+ std::string::size_type endVariant = attribute.find(']', beginVariant + 9);
|
|
|
if (endVariant == std::string::npos) {
|
|
|
// There is no terminating bracket.
|
|
|
return;
|
|
|
@@ -1544,16 +1532,15 @@ void cmGlobalXCodeGenerator::CreateCustomRulesMakefile(
|
|
|
makefileStream << "all: ";
|
|
|
std::map<const cmCustomCommand*, std::string> tname;
|
|
|
int count = 0;
|
|
|
- for (std::vector<cmCustomCommand>::const_iterator i = commands.begin();
|
|
|
- i != commands.end(); ++i) {
|
|
|
- cmCustomCommandGenerator ccg(*i, configName, this->CurrentLocalGenerator);
|
|
|
+ for (auto const& command : commands) {
|
|
|
+ cmCustomCommandGenerator ccg(command, configName,
|
|
|
+ this->CurrentLocalGenerator);
|
|
|
if (ccg.GetNumberOfCommands() > 0) {
|
|
|
const std::vector<std::string>& outputs = ccg.GetOutputs();
|
|
|
if (!outputs.empty()) {
|
|
|
- for (std::vector<std::string>::const_iterator o = outputs.begin();
|
|
|
- o != outputs.end(); ++o) {
|
|
|
+ for (auto const& output : outputs) {
|
|
|
makefileStream << "\\\n\t"
|
|
|
- << this->ConvertToRelativeForMake(o->c_str());
|
|
|
+ << this->ConvertToRelativeForMake(output.c_str());
|
|
|
}
|
|
|
} else {
|
|
|
std::ostringstream str;
|
|
|
@@ -1564,18 +1551,18 @@ void cmGlobalXCodeGenerator::CreateCustomRulesMakefile(
|
|
|
}
|
|
|
}
|
|
|
makefileStream << "\n\n";
|
|
|
- for (std::vector<cmCustomCommand>::const_iterator i = commands.begin();
|
|
|
- i != commands.end(); ++i) {
|
|
|
- cmCustomCommandGenerator ccg(*i, configName, this->CurrentLocalGenerator);
|
|
|
+ for (auto const& command : commands) {
|
|
|
+ cmCustomCommandGenerator ccg(command, configName,
|
|
|
+ this->CurrentLocalGenerator);
|
|
|
if (ccg.GetNumberOfCommands() > 0) {
|
|
|
makefileStream << "\n";
|
|
|
const std::vector<std::string>& outputs = ccg.GetOutputs();
|
|
|
if (!outputs.empty()) {
|
|
|
// There is at least one output, start the rule for it
|
|
|
const char* sep = "";
|
|
|
- for (std::vector<std::string>::const_iterator oi = outputs.begin();
|
|
|
- oi != outputs.end(); ++oi) {
|
|
|
- makefileStream << sep << this->ConvertToRelativeForMake(oi->c_str());
|
|
|
+ for (auto const& output : outputs) {
|
|
|
+ makefileStream << sep
|
|
|
+ << this->ConvertToRelativeForMake(output.c_str());
|
|
|
sep = " ";
|
|
|
}
|
|
|
makefileStream << ": ";
|
|
|
@@ -1583,11 +1570,9 @@ void cmGlobalXCodeGenerator::CreateCustomRulesMakefile(
|
|
|
// There are no outputs. Use the generated force rule name.
|
|
|
makefileStream << tname[&ccg.GetCC()] << ": ";
|
|
|
}
|
|
|
- for (std::vector<std::string>::const_iterator d =
|
|
|
- ccg.GetDepends().begin();
|
|
|
- d != ccg.GetDepends().end(); ++d) {
|
|
|
+ for (auto const& d : ccg.GetDepends()) {
|
|
|
std::string dep;
|
|
|
- if (this->CurrentLocalGenerator->GetRealDependency(*d, configName,
|
|
|
+ if (this->CurrentLocalGenerator->GetRealDependency(d, configName,
|
|
|
dep)) {
|
|
|
makefileStream << "\\\n"
|
|
|
<< this->ConvertToRelativeForMake(dep.c_str());
|
|
|
@@ -1642,9 +1627,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
std::set<std::string> languages;
|
|
|
gtgt->GetLanguages(languages, configName);
|
|
|
std::map<std::string, std::string> cflags;
|
|
|
- for (std::set<std::string>::iterator li = languages.begin();
|
|
|
- li != languages.end(); ++li) {
|
|
|
- std::string const& lang = *li;
|
|
|
+ for (auto const& lang : languages) {
|
|
|
std::string& flags = cflags[lang];
|
|
|
|
|
|
// Add language-specific flags.
|
|
|
@@ -1740,9 +1723,8 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
} else {
|
|
|
cmXCodeObject* archObjects =
|
|
|
this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
- for (std::vector<std::string>::iterator i = archs.begin();
|
|
|
- i != archs.end(); i++) {
|
|
|
- archObjects->AddObject(this->CreateString(*i));
|
|
|
+ for (auto& arch : archs) {
|
|
|
+ archObjects->AddObject(this->CreateString(arch));
|
|
|
}
|
|
|
buildSettings->AddAttribute("ARCHS", archObjects);
|
|
|
}
|
|
|
@@ -1967,10 +1949,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
std::set<std::string> emitted;
|
|
|
emitted.insert("/System/Library/Frameworks");
|
|
|
|
|
|
- for (std::vector<std::string>::iterator i = includes.begin();
|
|
|
- i != includes.end(); ++i) {
|
|
|
- if (this->NameResolvesToFramework(*i)) {
|
|
|
- std::string frameworkDir = *i;
|
|
|
+ for (auto& include : includes) {
|
|
|
+ if (this->NameResolvesToFramework(include)) {
|
|
|
+ std::string frameworkDir = include;
|
|
|
frameworkDir += "/../";
|
|
|
frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
|
|
|
if (emitted.insert(frameworkDir).second) {
|
|
|
@@ -1983,9 +1964,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- std::string incpath = this->XCodeEscapePath(*i);
|
|
|
+ std::string incpath = this->XCodeEscapePath(include);
|
|
|
if (emitSystemIncludes &&
|
|
|
- gtgt->IsSystemIncludeDirectory(*i, configName)) {
|
|
|
+ gtgt->IsSystemIncludeDirectory(include, configName)) {
|
|
|
sysdirs.Add(incpath);
|
|
|
} else {
|
|
|
dirs.Add(incpath);
|
|
|
@@ -1995,12 +1976,11 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
// Add framework search paths needed for linking.
|
|
|
if (cmComputeLinkInformation* cli = gtgt->GetLinkInformation(configName)) {
|
|
|
std::vector<std::string> const& fwDirs = cli->GetFrameworkPaths();
|
|
|
- for (std::vector<std::string>::const_iterator fdi = fwDirs.begin();
|
|
|
- fdi != fwDirs.end(); ++fdi) {
|
|
|
- if (emitted.insert(*fdi).second) {
|
|
|
- std::string incpath = this->XCodeEscapePath(*fdi);
|
|
|
+ for (auto const& fwDir : fwDirs) {
|
|
|
+ if (emitted.insert(fwDir).second) {
|
|
|
+ std::string incpath = this->XCodeEscapePath(fwDir);
|
|
|
if (emitSystemIncludes &&
|
|
|
- gtgt->IsSystemIncludeDirectory(*fdi, configName)) {
|
|
|
+ gtgt->IsSystemIncludeDirectory(fwDir, configName)) {
|
|
|
sysfdirs.Add(incpath);
|
|
|
} else {
|
|
|
fdirs.Add(incpath);
|
|
|
@@ -2028,13 +2008,12 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
// system include directory awareness. We need to also keep on setting
|
|
|
// HEADER_SEARCH_PATHS to work around a missing compile options flag for
|
|
|
// GNU assembly files (#16449)
|
|
|
- for (std::set<std::string>::iterator li = languages.begin();
|
|
|
- li != languages.end(); ++li) {
|
|
|
+ for (auto const& language : languages) {
|
|
|
std::string includeFlags = this->CurrentLocalGenerator->GetIncludeFlags(
|
|
|
- includes, gtgt, *li, true, false, configName);
|
|
|
+ includes, gtgt, language, true, false, configName);
|
|
|
|
|
|
if (!includeFlags.empty()) {
|
|
|
- cflags[*li] += " " + includeFlags;
|
|
|
+ cflags[language] += " " + includeFlags;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2045,10 +2024,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
std::string optLevel = "0";
|
|
|
|
|
|
// Minimal map of flags to build settings.
|
|
|
- for (std::set<std::string>::iterator li = languages.begin();
|
|
|
- li != languages.end(); ++li) {
|
|
|
- std::string& flags = cflags[*li];
|
|
|
- std::string& gflag = gflags[*li];
|
|
|
+ for (auto const& language : languages) {
|
|
|
+ std::string& flags = cflags[language];
|
|
|
+ std::string& gflag = gflags[language];
|
|
|
std::string oflag =
|
|
|
this->ExtractFlagRegex("(^| )(-Ofast|-Os|-O[0-9]*)( |$)", 2, flags);
|
|
|
if (oflag.size() == 2) {
|
|
|
@@ -2073,10 +2051,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
if (!same_gflags) {
|
|
|
// We can't set the Xcode flag differently depending on the language,
|
|
|
// so put them back in this case.
|
|
|
- for (std::set<std::string>::iterator li = languages.begin();
|
|
|
- li != languages.end(); ++li) {
|
|
|
- cflags[*li] += " ";
|
|
|
- cflags[*li] += gflags[*li];
|
|
|
+ for (auto const& language : languages) {
|
|
|
+ cflags[language] += " ";
|
|
|
+ cflags[language] += gflags[language];
|
|
|
}
|
|
|
debugStr = "NO";
|
|
|
} else if (last_gflag && (last_gflag->empty() || *last_gflag == "-g0")) {
|
|
|
@@ -2093,18 +2070,17 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
this->CreateString("NO"));
|
|
|
buildSettings->AddAttribute("GCC_INLINES_ARE_PRIVATE_EXTERN",
|
|
|
this->CreateString("NO"));
|
|
|
- for (std::set<std::string>::iterator li = languages.begin();
|
|
|
- li != languages.end(); ++li) {
|
|
|
- std::string flags = cflags[*li] + " " + defFlags;
|
|
|
- if (*li == "CXX") {
|
|
|
+ for (auto const& language : languages) {
|
|
|
+ std::string flags = cflags[language] + " " + defFlags;
|
|
|
+ if (language == "CXX") {
|
|
|
buildSettings->AddAttribute("OTHER_CPLUSPLUSFLAGS",
|
|
|
this->CreateString(flags));
|
|
|
- } else if (*li == "Fortran") {
|
|
|
+ } else if (language == "Fortran") {
|
|
|
buildSettings->AddAttribute("IFORT_OTHER_FLAGS",
|
|
|
this->CreateString(flags));
|
|
|
- } else if (*li == "C") {
|
|
|
+ } else if (language == "C") {
|
|
|
buildSettings->AddAttribute("OTHER_CFLAGS", this->CreateString(flags));
|
|
|
- } else if (*li == "Swift") {
|
|
|
+ } else if (language == "Swift") {
|
|
|
buildSettings->AddAttribute("OTHER_SWIFT_FLAGS",
|
|
|
this->CreateString(flags));
|
|
|
}
|
|
|
@@ -2228,15 +2204,14 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
|
|
// Convert "XCODE_ATTRIBUTE_*" properties directly.
|
|
|
{
|
|
|
std::vector<std::string> const& props = gtgt->GetPropertyKeys();
|
|
|
- for (std::vector<std::string>::const_iterator i = props.begin();
|
|
|
- i != props.end(); ++i) {
|
|
|
- if (i->find("XCODE_ATTRIBUTE_") == 0) {
|
|
|
- std::string attribute = i->substr(16);
|
|
|
+ for (auto const& prop : props) {
|
|
|
+ if (prop.find("XCODE_ATTRIBUTE_") == 0) {
|
|
|
+ std::string attribute = prop.substr(16);
|
|
|
this->FilterConfigurationAttribute(configName, attribute);
|
|
|
if (!attribute.empty()) {
|
|
|
cmGeneratorExpression ge;
|
|
|
std::string processed =
|
|
|
- ge.Parse(gtgt->GetProperty(*i))
|
|
|
+ ge.Parse(gtgt->GetProperty(prop))
|
|
|
->Evaluate(this->CurrentLocalGenerator, configName);
|
|
|
buildSettings->AddAttribute(attribute,
|
|
|
this->CreateString(processed));
|
|
|
@@ -2324,15 +2299,15 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target,
|
|
|
configlist->SetComment(comment);
|
|
|
target->AddAttribute("buildConfigurationList",
|
|
|
this->CreateObjectReference(configlist));
|
|
|
- for (unsigned int i = 0; i < configVector.size(); ++i) {
|
|
|
+ for (auto const& i : configVector) {
|
|
|
cmXCodeObject* config =
|
|
|
this->CreateObject(cmXCodeObject::XCBuildConfiguration);
|
|
|
buildConfigurations->AddObject(config);
|
|
|
cmXCodeObject* buildSettings =
|
|
|
this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
|
- this->CreateBuildSettings(gtgt, buildSettings, configVector[i]);
|
|
|
- config->AddAttribute("name", this->CreateString(configVector[i]));
|
|
|
- config->SetComment(configVector[i]);
|
|
|
+ this->CreateBuildSettings(gtgt, buildSettings, i);
|
|
|
+ config->AddAttribute("name", this->CreateString(i));
|
|
|
+ config->SetComment(i);
|
|
|
config->AddAttribute("buildSettings", buildSettings);
|
|
|
}
|
|
|
if (!configVector.empty()) {
|
|
|
@@ -2352,9 +2327,8 @@ const char* cmGlobalXCodeGenerator::GetTargetLinkFlagsVar(
|
|
|
(target->GetType() == cmStateEnums::STATIC_LIBRARY ||
|
|
|
target->GetType() == cmStateEnums::OBJECT_LIBRARY)) {
|
|
|
return "OTHER_LIBTOOLFLAGS";
|
|
|
- } else {
|
|
|
- return "OTHER_LDFLAGS";
|
|
|
}
|
|
|
+ return "OTHER_LDFLAGS";
|
|
|
}
|
|
|
|
|
|
const char* cmGlobalXCodeGenerator::GetTargetFileType(
|
|
|
@@ -2371,12 +2345,13 @@ const char* cmGlobalXCodeGenerator::GetTargetFileType(
|
|
|
return (target->GetPropertyAsBool("FRAMEWORK") ? "wrapper.framework"
|
|
|
: "archive.ar");
|
|
|
case cmStateEnums::MODULE_LIBRARY:
|
|
|
- if (target->IsXCTestOnApple())
|
|
|
+ if (target->IsXCTestOnApple()) {
|
|
|
return "wrapper.cfbundle";
|
|
|
- else if (target->IsCFBundleOnApple())
|
|
|
+ }
|
|
|
+ if (target->IsCFBundleOnApple()) {
|
|
|
return "wrapper.plug-in";
|
|
|
- else
|
|
|
- return "compiled.mach-o.executable";
|
|
|
+ }
|
|
|
+ return "compiled.mach-o.executable";
|
|
|
case cmStateEnums::SHARED_LIBRARY:
|
|
|
return (target->GetPropertyAsBool("FRAMEWORK")
|
|
|
? "wrapper.framework"
|
|
|
@@ -2404,12 +2379,13 @@ const char* cmGlobalXCodeGenerator::GetTargetProductType(
|
|
|
? "com.apple.product-type.framework"
|
|
|
: "com.apple.product-type.library.static");
|
|
|
case cmStateEnums::MODULE_LIBRARY:
|
|
|
- if (target->IsXCTestOnApple())
|
|
|
+ if (target->IsXCTestOnApple()) {
|
|
|
return "com.apple.product-type.bundle.unit-test";
|
|
|
- else if (target->IsCFBundleOnApple())
|
|
|
+ } else if (target->IsCFBundleOnApple()) {
|
|
|
return "com.apple.product-type.bundle";
|
|
|
- else
|
|
|
+ } else {
|
|
|
return "com.apple.product-type.tool";
|
|
|
+ }
|
|
|
case cmStateEnums::SHARED_LIBRARY:
|
|
|
return (target->GetPropertyAsBool("FRAMEWORK")
|
|
|
? "com.apple.product-type.framework"
|
|
|
@@ -2563,15 +2539,14 @@ void cmGlobalXCodeGenerator::AppendBuildSettingAttribute(
|
|
|
std::vector<cmXCodeObject*> list = buildConfigs->GetObjectList();
|
|
|
// each configuration and the target itself has a buildSettings in it
|
|
|
// list.push_back(target);
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = list.begin(); i != list.end();
|
|
|
- ++i) {
|
|
|
+ for (auto& i : list) {
|
|
|
if (!configName.empty()) {
|
|
|
- if ((*i)->GetObject("name")->GetString() == configName) {
|
|
|
- cmXCodeObject* settings = (*i)->GetObject("buildSettings");
|
|
|
+ if (i->GetObject("name")->GetString() == configName) {
|
|
|
+ cmXCodeObject* settings = i->GetObject("buildSettings");
|
|
|
this->AppendOrAddBuildSetting(settings, attribute, value);
|
|
|
}
|
|
|
} else {
|
|
|
- cmXCodeObject* settings = (*i)->GetObject("buildSettings");
|
|
|
+ cmXCodeObject* settings = i->GetObject("buildSettings");
|
|
|
this->AppendOrAddBuildSetting(settings, attribute, value);
|
|
|
}
|
|
|
}
|
|
|
@@ -2590,20 +2565,15 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
|
|
|
|
|
// Add dependencies on other CMake targets.
|
|
|
TargetDependSet const& deps = this->GetTargetDirectDepends(gt);
|
|
|
- for (TargetDependSet::const_iterator i = deps.begin(); i != deps.end();
|
|
|
- ++i) {
|
|
|
- if (cmXCodeObject* dptarget = this->FindXCodeTarget(*i)) {
|
|
|
+ for (auto dep : deps) {
|
|
|
+ if (cmXCodeObject* dptarget = this->FindXCodeTarget(dep)) {
|
|
|
this->AddDependTarget(target, dptarget);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Loop over configuration types and set per-configuration info.
|
|
|
- for (std::vector<std::string>::iterator i =
|
|
|
- this->CurrentConfigurationTypes.begin();
|
|
|
- i != this->CurrentConfigurationTypes.end(); ++i) {
|
|
|
+ for (auto const& configName : this->CurrentConfigurationTypes) {
|
|
|
// Get the current configuration name.
|
|
|
- std::string configName = *i;
|
|
|
-
|
|
|
if (this->XcodeVersion >= 50) {
|
|
|
// Add object library contents as link flags.
|
|
|
std::string linkObjs;
|
|
|
@@ -2639,9 +2609,8 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
|
|
// Add dependencies directly on library files.
|
|
|
{
|
|
|
std::vector<std::string> const& libDeps = cli.GetDepends();
|
|
|
- for (std::vector<std::string>::const_iterator j = libDeps.begin();
|
|
|
- j != libDeps.end(); ++j) {
|
|
|
- target->AddDependLibrary(configName, *j);
|
|
|
+ for (auto const& libDep : libDeps) {
|
|
|
+ target->AddDependLibrary(configName, libDep);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2649,16 +2618,15 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
|
|
{
|
|
|
std::vector<std::string> const& libDirs = cli.GetDirectories();
|
|
|
std::string linkDirs;
|
|
|
- for (std::vector<std::string>::const_iterator libDir = libDirs.begin();
|
|
|
- libDir != libDirs.end(); ++libDir) {
|
|
|
- if (libDir->size() && *libDir != "/usr/lib") {
|
|
|
+ for (auto const& libDir : libDirs) {
|
|
|
+ if (!libDir.empty() && libDir != "/usr/lib") {
|
|
|
// Now add the same one but append
|
|
|
// $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to it:
|
|
|
linkDirs += " ";
|
|
|
linkDirs += this->XCodeEscapePath(
|
|
|
- *libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)");
|
|
|
+ libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)");
|
|
|
linkDirs += " ";
|
|
|
- linkDirs += this->XCodeEscapePath(*libDir);
|
|
|
+ linkDirs += this->XCodeEscapePath(libDir);
|
|
|
}
|
|
|
}
|
|
|
this->AppendBuildSettingAttribute(target, "LIBRARY_SEARCH_PATHS",
|
|
|
@@ -2671,18 +2639,18 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
|
|
const char* sep = "";
|
|
|
typedef cmComputeLinkInformation::ItemVector ItemVector;
|
|
|
ItemVector const& libNames = cli.GetItems();
|
|
|
- for (ItemVector::const_iterator li = libNames.begin();
|
|
|
- li != libNames.end(); ++li) {
|
|
|
+ for (auto const& libName : libNames) {
|
|
|
linkLibs += sep;
|
|
|
sep = " ";
|
|
|
- if (li->IsPath) {
|
|
|
- linkLibs += this->XCodeEscapePath(li->Value);
|
|
|
- } else if (!li->Target ||
|
|
|
- li->Target->GetType() != cmStateEnums::INTERFACE_LIBRARY) {
|
|
|
- linkLibs += li->Value;
|
|
|
+ if (libName.IsPath) {
|
|
|
+ linkLibs += this->XCodeEscapePath(libName.Value);
|
|
|
+ } else if (!libName.Target ||
|
|
|
+ libName.Target->GetType() !=
|
|
|
+ cmStateEnums::INTERFACE_LIBRARY) {
|
|
|
+ linkLibs += libName.Value;
|
|
|
}
|
|
|
- if (li->Target && !li->Target->IsImported()) {
|
|
|
- target->AddDependTarget(configName, li->Target->GetName());
|
|
|
+ if (libName.Target && !libName.Target->IsImported()) {
|
|
|
+ target->AddDependTarget(configName, libName.Target->GetName());
|
|
|
}
|
|
|
}
|
|
|
this->AppendBuildSettingAttribute(
|
|
|
@@ -2694,15 +2662,12 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
|
|
bool cmGlobalXCodeGenerator::CreateGroups(
|
|
|
std::vector<cmLocalGenerator*>& generators)
|
|
|
{
|
|
|
- for (std::vector<cmLocalGenerator*>::iterator i = generators.begin();
|
|
|
- i != generators.end(); ++i) {
|
|
|
- cmMakefile* mf = (*i)->GetMakefile();
|
|
|
+ for (auto& generator : generators) {
|
|
|
+ cmMakefile* mf = generator->GetMakefile();
|
|
|
std::vector<cmSourceGroup> sourceGroups = mf->GetSourceGroups();
|
|
|
- const std::vector<cmGeneratorTarget*>& tgts = (*i)->GetGeneratorTargets();
|
|
|
- for (std::vector<cmGeneratorTarget*>::const_iterator l = tgts.begin();
|
|
|
- l != tgts.end(); l++) {
|
|
|
- cmGeneratorTarget* gtgt = *l;
|
|
|
-
|
|
|
+ const std::vector<cmGeneratorTarget*>& tgts =
|
|
|
+ generator->GetGeneratorTargets();
|
|
|
+ for (auto gtgt : tgts) {
|
|
|
// Same skipping logic here as in CreateXCodeTargets so that we do not
|
|
|
// end up with (empty anyhow) ALL_BUILD and XCODE_DEPEND_HELPER source
|
|
|
// groups:
|
|
|
@@ -2726,10 +2691,8 @@ bool cmGlobalXCodeGenerator::CreateGroups(
|
|
|
gtgt->GetAllConfigSources();
|
|
|
|
|
|
// Put cmSourceFile instances in proper groups:
|
|
|
- for (std::vector<cmGeneratorTarget::AllConfigSource>::const_iterator si =
|
|
|
- sources.begin();
|
|
|
- si != sources.end(); ++si) {
|
|
|
- cmSourceFile const* sf = si->Source;
|
|
|
+ for (auto const& si : sources) {
|
|
|
+ cmSourceFile const* sf = si.Source;
|
|
|
if (this->XcodeVersion >= 50 && !sf->GetObjectLibrary().empty()) {
|
|
|
// Object library files go on the link line instead.
|
|
|
continue;
|
|
|
@@ -2748,19 +2711,21 @@ bool cmGlobalXCodeGenerator::CreateGroups(
|
|
|
}
|
|
|
|
|
|
cmXCodeObject* cmGlobalXCodeGenerator::CreatePBXGroup(cmXCodeObject* parent,
|
|
|
- std::string name)
|
|
|
+ const std::string& name)
|
|
|
{
|
|
|
cmXCodeObject* parentChildren = nullptr;
|
|
|
- if (parent)
|
|
|
+ if (parent) {
|
|
|
parentChildren = parent->GetObject("children");
|
|
|
+ }
|
|
|
cmXCodeObject* group = this->CreateObject(cmXCodeObject::PBXGroup);
|
|
|
cmXCodeObject* groupChildren =
|
|
|
this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
group->AddAttribute("name", this->CreateString(name));
|
|
|
group->AddAttribute("children", groupChildren);
|
|
|
group->AddAttribute("sourceTree", this->CreateString("<group>"));
|
|
|
- if (parentChildren)
|
|
|
+ if (parentChildren) {
|
|
|
parentChildren->AddObject(group);
|
|
|
+ }
|
|
|
return group;
|
|
|
}
|
|
|
|
|
|
@@ -2814,7 +2779,7 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateOrGetPBXGroup(
|
|
|
// If it's the default source group (empty name) then put the source file
|
|
|
// directly in the tgroup...
|
|
|
//
|
|
|
- if (std::string(sg->GetFullName()) == "") {
|
|
|
+ if (std::string(sg->GetFullName()).empty()) {
|
|
|
this->GroupNameMap[s] = tgroup;
|
|
|
return tgroup;
|
|
|
}
|
|
|
@@ -2825,13 +2790,13 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateOrGetPBXGroup(
|
|
|
cmSystemTools::tokenize(sg->GetFullName(), "\\");
|
|
|
std::string curr_folder = target;
|
|
|
curr_folder += "/";
|
|
|
- for (std::vector<std::string>::size_type i = 0; i < folders.size(); i++) {
|
|
|
- curr_folder += folders[i];
|
|
|
+ for (auto const& folder : folders) {
|
|
|
+ curr_folder += folder;
|
|
|
std::map<std::string, cmXCodeObject*>::iterator i_folder =
|
|
|
this->GroupNameMap.find(curr_folder);
|
|
|
// Create new folder
|
|
|
if (i_folder == this->GroupNameMap.end()) {
|
|
|
- cmXCodeObject* group = this->CreatePBXGroup(tgroup, folders[i]);
|
|
|
+ cmXCodeObject* group = this->CreatePBXGroup(tgroup, folder);
|
|
|
this->GroupNameMap[curr_folder] = group;
|
|
|
tgroup = group;
|
|
|
} else {
|
|
|
@@ -2855,10 +2820,10 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
|
|
|
cmXCodeObject* group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
|
group->AddAttribute("COPY_PHASE_STRIP", this->CreateString("NO"));
|
|
|
cmXCodeObject* listObjs = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
- for (unsigned int i = 0; i < this->CurrentConfigurationTypes.size(); ++i) {
|
|
|
+ for (auto& CurrentConfigurationType : this->CurrentConfigurationTypes) {
|
|
|
cmXCodeObject* buildStyle =
|
|
|
this->CreateObject(cmXCodeObject::PBXBuildStyle);
|
|
|
- const char* name = this->CurrentConfigurationTypes[i].c_str();
|
|
|
+ const char* name = CurrentConfigurationType.c_str();
|
|
|
buildStyle->AddAttribute("name", this->CreateString(name));
|
|
|
buildStyle->SetComment(name);
|
|
|
cmXCodeObject* sgroup = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
|
@@ -2891,7 +2856,7 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
|
|
|
std::string project_id = "PROJECT_";
|
|
|
project_id += root->GetProjectName();
|
|
|
this->RootObject->SetId(
|
|
|
- this->GetOrCreateId(project_id.c_str(), this->RootObject->GetId()));
|
|
|
+ this->GetOrCreateId(project_id, this->RootObject->GetId()));
|
|
|
|
|
|
group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
|
|
|
this->RootObject->AddAttribute("mainGroup",
|
|
|
@@ -2907,15 +2872,16 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
|
|
|
v << std::setfill('0') << std::setw(4) << XcodeVersion * 10;
|
|
|
group->AddAttribute("LastUpgradeCheck", this->CreateString(v.str()));
|
|
|
this->RootObject->AddAttribute("attributes", group);
|
|
|
- if (this->XcodeVersion >= 32)
|
|
|
+ if (this->XcodeVersion >= 32) {
|
|
|
this->RootObject->AddAttribute("compatibilityVersion",
|
|
|
this->CreateString("Xcode 3.2"));
|
|
|
- else if (this->XcodeVersion >= 31)
|
|
|
+ } else if (this->XcodeVersion >= 31) {
|
|
|
this->RootObject->AddAttribute("compatibilityVersion",
|
|
|
this->CreateString("Xcode 3.1"));
|
|
|
- else
|
|
|
+ } else {
|
|
|
this->RootObject->AddAttribute("compatibilityVersion",
|
|
|
this->CreateString("Xcode 3.0"));
|
|
|
+ }
|
|
|
// Point Xcode at the top of the source tree.
|
|
|
{
|
|
|
std::string pdir =
|
|
|
@@ -2940,8 +2906,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
|
|
|
config->AddAttribute("name", this->CreateString(name));
|
|
|
configs.push_back(std::make_pair(name, config));
|
|
|
}
|
|
|
- for (Configs::iterator c = configs.begin(); c != configs.end(); ++c) {
|
|
|
- buildConfigurations->AddObject(c->second);
|
|
|
+ for (auto& config : configs) {
|
|
|
+ buildConfigurations->AddObject(config.second);
|
|
|
}
|
|
|
configlist->AddAttribute("buildConfigurations", buildConfigurations);
|
|
|
|
|
|
@@ -2999,7 +2965,7 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
|
|
|
symroot += "/build";
|
|
|
buildSettings->AddAttribute("SYMROOT", this->CreateString(symroot));
|
|
|
|
|
|
- for (Configs::iterator i = configs.begin(); i != configs.end(); ++i) {
|
|
|
+ for (auto& config : configs) {
|
|
|
cmXCodeObject* buildSettingsForCfg = this->CreateFlatClone(buildSettings);
|
|
|
|
|
|
// Put this last so it can override existing settings
|
|
|
@@ -3009,43 +2975,38 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
|
|
|
d != vars.end(); ++d) {
|
|
|
if (d->find("CMAKE_XCODE_ATTRIBUTE_") == 0) {
|
|
|
std::string attribute = d->substr(22);
|
|
|
- this->FilterConfigurationAttribute(i->first, attribute);
|
|
|
+ this->FilterConfigurationAttribute(config.first, attribute);
|
|
|
if (!attribute.empty()) {
|
|
|
cmGeneratorExpression ge;
|
|
|
std::string processed =
|
|
|
ge.Parse(this->CurrentMakefile->GetDefinition(*d))
|
|
|
- ->Evaluate(this->CurrentLocalGenerator, i->first);
|
|
|
+ ->Evaluate(this->CurrentLocalGenerator, config.first);
|
|
|
buildSettingsForCfg->AddAttribute(attribute,
|
|
|
this->CreateString(processed));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// store per-config buildSettings into configuration object
|
|
|
- i->second->AddAttribute("buildSettings", buildSettingsForCfg);
|
|
|
+ config.second->AddAttribute("buildSettings", buildSettingsForCfg);
|
|
|
}
|
|
|
|
|
|
this->RootObject->AddAttribute("buildConfigurationList",
|
|
|
this->CreateObjectReference(configlist));
|
|
|
|
|
|
std::vector<cmXCodeObject*> targets;
|
|
|
- for (std::vector<cmLocalGenerator*>::iterator i = generators.begin();
|
|
|
- i != generators.end(); ++i) {
|
|
|
- if (!this->CreateXCodeTargets(*i, targets)) {
|
|
|
+ for (auto& generator : generators) {
|
|
|
+ if (!this->CreateXCodeTargets(generator, targets)) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
// loop over all targets and add link and depend info
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = targets.begin();
|
|
|
- i != targets.end(); ++i) {
|
|
|
- cmXCodeObject* t = *i;
|
|
|
+ for (auto t : targets) {
|
|
|
this->AddDependAndLinkInformation(t);
|
|
|
}
|
|
|
this->CreateXCodeDependHackTarget(targets);
|
|
|
// now add all targets to the root object
|
|
|
cmXCodeObject* allTargets = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = targets.begin();
|
|
|
- i != targets.end(); ++i) {
|
|
|
- cmXCodeObject* t = *i;
|
|
|
+ for (auto t : targets) {
|
|
|
allTargets->AddObject(t);
|
|
|
cmXCodeObject* productRef = t->GetObject("productReference");
|
|
|
if (productRef) {
|
|
|
@@ -3138,9 +3099,7 @@ void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
|
|
|
this->CurrentConfigurationTypes.begin();
|
|
|
ct != this->CurrentConfigurationTypes.end(); ++ct) {
|
|
|
std::string configName = *ct;
|
|
|
- for (std::vector<cmXCodeObject*>::iterator i = targets.begin();
|
|
|
- i != targets.end(); ++i) {
|
|
|
- cmXCodeObject* target = *i;
|
|
|
+ for (auto target : targets) {
|
|
|
cmGeneratorTarget* gt = target->GetTarget();
|
|
|
|
|
|
if (gt->GetType() == cmStateEnums::EXECUTABLE ||
|
|
|
@@ -3165,9 +3124,8 @@ void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
|
|
|
target->GetDependTargets().find(*ct);
|
|
|
if (y != target->GetDependTargets().end()) {
|
|
|
std::vector<std::string> const& deptgts = y->second;
|
|
|
- for (std::vector<std::string>::const_iterator d = deptgts.begin();
|
|
|
- d != deptgts.end(); ++d) {
|
|
|
- makefileStream << this->PostBuildMakeTarget(*d, *ct) << ": "
|
|
|
+ for (auto const& deptgt : deptgts) {
|
|
|
+ makefileStream << this->PostBuildMakeTarget(deptgt, *ct) << ": "
|
|
|
<< trel << "\n";
|
|
|
}
|
|
|
}
|
|
|
@@ -3189,9 +3147,8 @@ void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
|
|
|
target->GetDependLibraries().find(*ct);
|
|
|
if (x != target->GetDependLibraries().end()) {
|
|
|
std::vector<std::string> const& deplibs = x->second;
|
|
|
- for (std::vector<std::string>::const_iterator d = deplibs.begin();
|
|
|
- d != deplibs.end(); ++d) {
|
|
|
- std::string file = this->ConvertToRelativeForMake(d->c_str());
|
|
|
+ for (auto const& deplib : deplibs) {
|
|
|
+ std::string file = this->ConvertToRelativeForMake(deplib.c_str());
|
|
|
makefileStream << "\\\n\t" << file;
|
|
|
dummyRules.insert(file);
|
|
|
}
|
|
|
@@ -3223,11 +3180,9 @@ void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
|
|
|
if (this->Architectures.size() > 1) {
|
|
|
std::string universal = this->GetObjectsNormalDirectory(
|
|
|
this->CurrentProject, configName, gt);
|
|
|
- for (std::vector<std::string>::iterator arch =
|
|
|
- this->Architectures.begin();
|
|
|
- arch != this->Architectures.end(); ++arch) {
|
|
|
+ for (auto& architecture : this->Architectures) {
|
|
|
std::string universalFile = universal;
|
|
|
- universalFile += *arch;
|
|
|
+ universalFile += architecture;
|
|
|
universalFile += "/";
|
|
|
universalFile += gt->GetFullName(configName);
|
|
|
makefileStream << "\t/bin/rm -f "
|
|
|
@@ -3244,22 +3199,20 @@ void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget(
|
|
|
makefileStream << "\n\n"
|
|
|
<< "# For each target create a dummy rule"
|
|
|
<< "so the target does not have to exist\n";
|
|
|
- for (std::set<std::string>::const_iterator it = dummyRules.begin();
|
|
|
- it != dummyRules.end(); ++it) {
|
|
|
- makefileStream << *it << ":\n";
|
|
|
+ for (auto const& dummyRule : dummyRules) {
|
|
|
+ makefileStream << dummyRule << ":\n";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void cmGlobalXCodeGenerator::OutputXCodeProject(
|
|
|
cmLocalGenerator* root, std::vector<cmLocalGenerator*>& generators)
|
|
|
{
|
|
|
- if (generators.size() == 0) {
|
|
|
+ if (generators.empty()) {
|
|
|
return;
|
|
|
}
|
|
|
// Skip local generators that are excluded from this project.
|
|
|
- for (std::vector<cmLocalGenerator*>::iterator g = generators.begin();
|
|
|
- g != generators.end(); ++g) {
|
|
|
- if (this->IsExcluded(root, *g)) {
|
|
|
+ for (auto& generator : generators) {
|
|
|
+ if (this->IsExcluded(root, generator)) {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
@@ -3387,12 +3340,13 @@ void cmGlobalXCodeGenerator::WriteXCodePBXProj(std::ostream& fout,
|
|
|
cmXCodeObject::Indent(1, fout);
|
|
|
fout << "};\n";
|
|
|
cmXCodeObject::Indent(1, fout);
|
|
|
- if (this->XcodeVersion >= 32)
|
|
|
+ if (this->XcodeVersion >= 32) {
|
|
|
fout << "objectVersion = 46;\n";
|
|
|
- else if (this->XcodeVersion >= 31)
|
|
|
+ } else if (this->XcodeVersion >= 31) {
|
|
|
fout << "objectVersion = 45;\n";
|
|
|
- else
|
|
|
+ } else {
|
|
|
fout << "objectVersion = 44;\n";
|
|
|
+ }
|
|
|
cmXCode21Object::PrintList(this->XCodeObjects, fout);
|
|
|
cmXCodeObject::Indent(1, fout);
|
|
|
fout << "rootObject = " << this->RootObject->GetId()
|
|
|
@@ -3512,11 +3466,10 @@ void cmGlobalXCodeGenerator::AppendDefines(
|
|
|
{
|
|
|
// GCC_PREPROCESSOR_DEFINITIONS is a space-separated list of definitions.
|
|
|
std::string def;
|
|
|
- for (std::vector<std::string>::const_iterator di = defines.begin();
|
|
|
- di != defines.end(); ++di) {
|
|
|
+ for (auto const& define : defines) {
|
|
|
// Start with -D if requested.
|
|
|
def = dflag ? "-D" : "";
|
|
|
- def += *di;
|
|
|
+ def += define;
|
|
|
|
|
|
// Append the flag with needed escapes.
|
|
|
std::string tmp;
|