ENH: commit fix for putting everything in the build on vs
This commit is contained in:
parent
976424f8d3
commit
b0bc59f709
|
@ -591,6 +591,29 @@ void cmGlobalGenerator::ClearEnabledLanguages()
|
|||
this->LanguageEnabled.clear();
|
||||
}
|
||||
|
||||
bool cmGlobalGenerator::IsDependedOn(const char* project,
|
||||
cmTarget* targetIn)
|
||||
{
|
||||
// Get all local gens for this project
|
||||
std::vector<cmLocalGenerator*>* gens = &this->ProjectMap[project];
|
||||
// loop over local gens and get the targets for each one
|
||||
for(unsigned int i = 0; i < gens->size(); ++i)
|
||||
{
|
||||
cmTargets& targets = (*gens)[i]->GetMakefile()->GetTargets();
|
||||
for (cmTargets::iterator l = targets.begin();
|
||||
l != targets.end(); l++)
|
||||
{
|
||||
cmTarget& target = l->second;
|
||||
if(target.GetUtilities().find(targetIn->GetName()) !=
|
||||
target.GetUtilities().end())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::Configure()
|
||||
{
|
||||
// Delete any existing cmLocalGenerators
|
||||
|
|
|
@ -168,6 +168,9 @@ public:
|
|||
///! Find a target by name by searching the local generators.
|
||||
cmTarget* FindTarget(const char* project, const char* name);
|
||||
|
||||
/** If check to see if the target is linked to by any other
|
||||
target in the project */
|
||||
bool IsDependedOn(const char* project, cmTarget* target);
|
||||
///! Find a local generator by its startdirectory
|
||||
cmLocalGenerator* FindLocalGenerator(const char* start_dir);
|
||||
|
||||
|
|
|
@ -254,13 +254,16 @@ void cmGlobalVisualStudio71Generator
|
|||
const cmCustomCommandLines& cmds = cc.GetCommandLines();
|
||||
std::string project = cmds[0][0];
|
||||
this->WriteProjectConfigurations(fout, project.c_str(),
|
||||
l->second.GetType());
|
||||
true);
|
||||
}
|
||||
else if ((l->second.GetType() != cmTarget::INSTALL_FILES)
|
||||
&& (l->second.GetType() != cmTarget::INSTALL_PROGRAMS))
|
||||
{
|
||||
bool partOfDefaultBuild = this->IsPartOfDefaultBuild(
|
||||
root->GetMakefile()->GetProjectName(),
|
||||
&l->second);
|
||||
this->WriteProjectConfigurations(fout, si->c_str(),
|
||||
l->second.GetType());
|
||||
partOfDefaultBuild);
|
||||
++si;
|
||||
}
|
||||
}
|
||||
|
@ -415,15 +418,15 @@ void cmGlobalVisualStudio71Generator
|
|||
// executables to the libraries it uses are also done here
|
||||
void cmGlobalVisualStudio71Generator
|
||||
::WriteProjectConfigurations(std::ostream& fout, const char* name,
|
||||
int targetType)
|
||||
bool partOfDefaultBuild)
|
||||
{
|
||||
std::string guid = this->GetGUID(name);
|
||||
for(std::vector<std::string>::iterator i = this->Configurations.begin();
|
||||
i != this->Configurations.end(); ++i)
|
||||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".ActiveCfg = " << *i << "|Win32\n";
|
||||
if(targetType != cmTarget::GLOBAL_TARGET)
|
||||
if(partOfDefaultBuild)
|
||||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".Build.0 = " << *i << "|Win32\n";
|
||||
|
|
|
@ -55,7 +55,7 @@ protected:
|
|||
const char* name, const char* path, cmTarget &t);
|
||||
virtual void WriteProjectConfigurations(std::ostream& fout,
|
||||
const char* name,
|
||||
int targetType);
|
||||
bool partOfDefaultBuild);
|
||||
virtual void WriteExternalProject(std::ostream& fout, const char* name,
|
||||
const char* path,
|
||||
const std::vector<std::string>& depends);
|
||||
|
|
|
@ -537,13 +537,16 @@ void cmGlobalVisualStudio7Generator
|
|||
const cmCustomCommandLines& cmds = cc.GetCommandLines();
|
||||
std::string name = cmds[0][0];
|
||||
this->WriteProjectConfigurations(fout, name.c_str(),
|
||||
l->second.GetType());
|
||||
true);
|
||||
}
|
||||
else if ((l->second.GetType() != cmTarget::INSTALL_FILES)
|
||||
&& (l->second.GetType() != cmTarget::INSTALL_PROGRAMS))
|
||||
{
|
||||
{
|
||||
bool partOfDefaultBuild = this->IsPartOfDefaultBuild(
|
||||
root->GetMakefile()->GetProjectName(),
|
||||
&l->second);
|
||||
this->WriteProjectConfigurations(fout, si->c_str(),
|
||||
l->second.GetType());
|
||||
partOfDefaultBuild);
|
||||
++si;
|
||||
}
|
||||
}
|
||||
|
@ -667,7 +670,7 @@ cmGlobalVisualStudio7Generator
|
|||
// executables to the libraries it uses are also done here
|
||||
void cmGlobalVisualStudio7Generator
|
||||
::WriteProjectConfigurations(std::ostream& fout, const char* name,
|
||||
int targetType)
|
||||
bool partOfDefaultBuild)
|
||||
{
|
||||
std::string guid = this->GetGUID(name);
|
||||
for(std::vector<std::string>::iterator i = this->Configurations.begin();
|
||||
|
@ -675,7 +678,7 @@ void cmGlobalVisualStudio7Generator
|
|||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".ActiveCfg = " << *i << "|Win32\n";
|
||||
if(targetType != cmTarget::GLOBAL_TARGET)
|
||||
if(partOfDefaultBuild)
|
||||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".Build.0 = " << *i << "|Win32\n";
|
||||
|
@ -799,3 +802,25 @@ cmGlobalVisualStudio7Generator
|
|||
dir += suffix;
|
||||
}
|
||||
}
|
||||
|
||||
bool cmGlobalVisualStudio7Generator::IsPartOfDefaultBuild(const char* project,
|
||||
cmTarget* target)
|
||||
{
|
||||
if(target->GetPropertyAsBool("EXCLUDE_FROM_DEFAULT_BUILD"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// if it is a utilitiy target then only make it part of the
|
||||
// default build if another target depends on it
|
||||
int type = target->GetType();
|
||||
if (type == cmTarget::GLOBAL_TARGET)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(type == cmTarget::UTILITY)
|
||||
{
|
||||
return this->IsDependedOn(project, target);
|
||||
}
|
||||
// default is to be part of the build
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ protected:
|
|||
const char* name, const char* path, cmTarget &t);
|
||||
virtual void WriteProjectConfigurations(std::ostream& fout,
|
||||
const char* name,
|
||||
int targetType);
|
||||
bool partOfDefaultBuild);
|
||||
virtual void WriteSLNFooter(std::ostream& fout);
|
||||
virtual void WriteSLNHeader(std::ostream& fout);
|
||||
virtual void AddPlatformDefinitions(cmMakefile* mf);
|
||||
|
@ -120,6 +120,8 @@ protected:
|
|||
|
||||
std::string ConvertToSolutionPath(const char* path);
|
||||
|
||||
bool IsPartOfDefaultBuild(const char* project,
|
||||
cmTarget* target);
|
||||
std::vector<std::string> Configurations;
|
||||
std::map<cmStdString, cmStdString> GUIDMap;
|
||||
|
||||
|
|
|
@ -228,7 +228,7 @@ cmGlobalVisualStudio8Generator
|
|||
void
|
||||
cmGlobalVisualStudio8Generator
|
||||
::WriteProjectConfigurations(std::ostream& fout, const char* name,
|
||||
int targetType)
|
||||
bool partOfDefaultBuild)
|
||||
{
|
||||
std::string guid = this->GetGUID(name);
|
||||
for(std::vector<std::string>::iterator i = this->Configurations.begin();
|
||||
|
@ -237,7 +237,7 @@ cmGlobalVisualStudio8Generator
|
|||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< "|" << this->PlatformName << ".ActiveCfg = "
|
||||
<< *i << "|" << this->PlatformName << "\n";
|
||||
if(targetType != cmTarget::GLOBAL_TARGET)
|
||||
if(partOfDefaultBuild)
|
||||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< "|" << this->PlatformName << ".Build.0 = "
|
||||
|
|
|
@ -57,7 +57,7 @@ protected:
|
|||
virtual void WriteSolutionConfigurations(std::ostream& fout);
|
||||
virtual void WriteProjectConfigurations(std::ostream& fout,
|
||||
const char* name,
|
||||
int targetType);
|
||||
bool partOfDefaultBuild);
|
||||
std::string PlatformName; // Win32 or x64
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -149,6 +149,10 @@ public:
|
|||
"installing a target. They are used only when the old "
|
||||
"INSTALL_TARGETS command is used to install the target. Use the "
|
||||
"INSTALL command instead."
|
||||
"\n"
|
||||
"The EXCLUDE_FROM_DEFAULT_BUILD property is used by the visual "
|
||||
"studio generators. If it is set to 1 the target will not be "
|
||||
"part of the default build when you select \"Build Solution\"."
|
||||
;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue