Add property EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
Allow EXCLUDE_FROM_DEFAULT_BUILD to be specified per configuration.
This commit is contained in:
parent
b777272b0b
commit
d1f8828cc8
|
@ -273,8 +273,9 @@ void cmGlobalVisualStudio71Generator
|
|||
// Write a dsp file into the SLN file, Note, that dependencies from
|
||||
// executables to the libraries it uses are also done here
|
||||
void cmGlobalVisualStudio71Generator
|
||||
::WriteProjectConfigurations(std::ostream& fout, const char* name,
|
||||
bool partOfDefaultBuild,
|
||||
::WriteProjectConfigurations(
|
||||
std::ostream& fout, const char* name,
|
||||
const std::set<std::string>& configsPartOfDefaultBuild,
|
||||
const char* platformMapping)
|
||||
{
|
||||
std::string guid = this->GetGUID(name);
|
||||
|
@ -284,7 +285,9 @@ void cmGlobalVisualStudio71Generator
|
|||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".ActiveCfg = " << *i << "|"
|
||||
<< (platformMapping ? platformMapping : "Win32") << std::endl;
|
||||
if(partOfDefaultBuild)
|
||||
std::set<std::string>::const_iterator
|
||||
ci = configsPartOfDefaultBuild.find(*i);
|
||||
if(!(ci == configsPartOfDefaultBuild.end()))
|
||||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".Build.0 = " << *i << "|"
|
||||
|
|
|
@ -61,9 +61,9 @@ protected:
|
|||
const char* name, const char* path, cmTarget &t);
|
||||
virtual void WriteProjectDepends(std::ostream& fout,
|
||||
const char* name, const char* path, cmTarget &t);
|
||||
virtual void WriteProjectConfigurations(std::ostream& fout,
|
||||
const char* name,
|
||||
bool partOfDefaultBuild,
|
||||
virtual void WriteProjectConfigurations(
|
||||
std::ostream& fout, const char* name,
|
||||
const std::set<std::string>& configsPartOfDefaultBuild,
|
||||
const char* platformMapping = NULL);
|
||||
virtual void WriteExternalProject(std::ostream& fout,
|
||||
const char* name,
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
See the License for more information.
|
||||
============================================================================*/
|
||||
#include "windows.h" // this must be first to define GetCurrentDirectory
|
||||
#include <assert.h>
|
||||
#include "cmGlobalVisualStudio7Generator.h"
|
||||
#include "cmGeneratedFileStream.h"
|
||||
#include "cmLocalVisualStudio7Generator.h"
|
||||
|
@ -243,20 +244,23 @@ void cmGlobalVisualStudio7Generator::WriteTargetConfigurations(
|
|||
const char* expath = target->GetProperty("EXTERNAL_MSPROJECT");
|
||||
if(expath)
|
||||
{
|
||||
std::set<std::string> allConfigurations(this->Configurations.begin(),
|
||||
this->Configurations.end());
|
||||
this->WriteProjectConfigurations(
|
||||
fout, target->GetName(),
|
||||
true, target->GetProperty("VS_PLATFORM_MAPPING"));
|
||||
allConfigurations, target->GetProperty("VS_PLATFORM_MAPPING"));
|
||||
}
|
||||
else
|
||||
{
|
||||
bool partOfDefaultBuild = this->IsPartOfDefaultBuild(
|
||||
root->GetMakefile()->GetProjectName(), target);
|
||||
const std::set<std::string>& configsPartOfDefaultBuild =
|
||||
this->IsPartOfDefaultBuild(root->GetMakefile()->GetProjectName(),
|
||||
target);
|
||||
const char *vcprojName =
|
||||
target->GetProperty("GENERATOR_FILE_NAME");
|
||||
if (vcprojName)
|
||||
{
|
||||
this->WriteProjectConfigurations(fout, vcprojName,
|
||||
partOfDefaultBuild);
|
||||
configsPartOfDefaultBuild);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -579,8 +583,9 @@ cmGlobalVisualStudio7Generator
|
|||
// Write a dsp file into the SLN file, Note, that dependencies from
|
||||
// executables to the libraries it uses are also done here
|
||||
void cmGlobalVisualStudio7Generator
|
||||
::WriteProjectConfigurations(std::ostream& fout, const char* name,
|
||||
bool partOfDefaultBuild,
|
||||
::WriteProjectConfigurations(
|
||||
std::ostream& fout, const char* name,
|
||||
const std::set<std::string>& configsPartOfDefaultBuild,
|
||||
const char* platformMapping)
|
||||
{
|
||||
std::string guid = this->GetGUID(name);
|
||||
|
@ -590,7 +595,9 @@ void cmGlobalVisualStudio7Generator
|
|||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".ActiveCfg = " << *i << "|"
|
||||
<< (platformMapping ? platformMapping : "Win32") << "\n";
|
||||
if(partOfDefaultBuild)
|
||||
std::set<std::string>::const_iterator
|
||||
ci = configsPartOfDefaultBuild.find(*i);
|
||||
if(!(ci == configsPartOfDefaultBuild.end()))
|
||||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< ".Build.0 = " << *i << "|"
|
||||
|
@ -763,26 +770,34 @@ cmGlobalVisualStudio7Generator
|
|||
}
|
||||
}
|
||||
|
||||
bool cmGlobalVisualStudio7Generator::IsPartOfDefaultBuild(const char* project,
|
||||
std::set<std::string>
|
||||
cmGlobalVisualStudio7Generator::IsPartOfDefaultBuild(const char* project,
|
||||
cmTarget* target)
|
||||
{
|
||||
if(target->GetPropertyAsBool("EXCLUDE_FROM_DEFAULT_BUILD"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
std::set<std::string> activeConfigs;
|
||||
// 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;
|
||||
return activeConfigs;
|
||||
}
|
||||
if(type == cmTarget::UTILITY)
|
||||
if(type == cmTarget::UTILITY && !this->IsDependedOn(project, target))
|
||||
{
|
||||
return this->IsDependedOn(project, target);
|
||||
return activeConfigs;
|
||||
}
|
||||
// default is to be part of the build
|
||||
return true;
|
||||
// inspect EXCLUDE_FROM_DEFAULT_BUILD[_<CONFIG>] properties
|
||||
for(std::vector<std::string>::iterator i = this->Configurations.begin();
|
||||
i != this->Configurations.end(); ++i)
|
||||
{
|
||||
const char* propertyValue =
|
||||
target->GetFeature("EXCLUDE_FROM_DEFAULT_BUILD", i->c_str());
|
||||
if(cmSystemTools::IsOff(propertyValue))
|
||||
{
|
||||
activeConfigs.insert(*i);
|
||||
}
|
||||
}
|
||||
return activeConfigs;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -105,9 +105,9 @@ protected:
|
|||
const char* name, const char* path, cmTarget &t);
|
||||
virtual void WriteProjectDepends(std::ostream& fout,
|
||||
const char* name, const char* path, cmTarget &t);
|
||||
virtual void WriteProjectConfigurations(std::ostream& fout,
|
||||
const char* name,
|
||||
bool partOfDefaultBuild,
|
||||
virtual void WriteProjectConfigurations(
|
||||
std::ostream& fout, const char* name,
|
||||
const std::set<std::string>& configsPartOfDefaultBuild,
|
||||
const char* platformMapping = NULL);
|
||||
virtual void WriteSLNFooter(std::ostream& fout);
|
||||
virtual void WriteSLNHeader(std::ostream& fout);
|
||||
|
@ -136,7 +136,7 @@ protected:
|
|||
|
||||
std::string ConvertToSolutionPath(const char* path);
|
||||
|
||||
bool IsPartOfDefaultBuild(const char* project,
|
||||
std::set<std::string> IsPartOfDefaultBuild(const char* project,
|
||||
cmTarget* target);
|
||||
std::vector<std::string> Configurations;
|
||||
std::map<cmStdString, cmStdString> GUIDMap;
|
||||
|
|
|
@ -258,8 +258,9 @@ cmGlobalVisualStudio8Generator
|
|||
//----------------------------------------------------------------------------
|
||||
void
|
||||
cmGlobalVisualStudio8Generator
|
||||
::WriteProjectConfigurations(std::ostream& fout, const char* name,
|
||||
bool partOfDefaultBuild,
|
||||
::WriteProjectConfigurations(
|
||||
std::ostream& fout, const char* name,
|
||||
const std::set<std::string>& configsPartOfDefaultBuild,
|
||||
const char* platformMapping)
|
||||
{
|
||||
std::string guid = this->GetGUID(name);
|
||||
|
@ -270,7 +271,9 @@ cmGlobalVisualStudio8Generator
|
|||
<< "|" << this->GetPlatformName() << ".ActiveCfg = " << *i << "|"
|
||||
<< (platformMapping ? platformMapping : this->GetPlatformName())
|
||||
<< "\n";
|
||||
if(partOfDefaultBuild)
|
||||
std::set<std::string>::const_iterator
|
||||
ci = configsPartOfDefaultBuild.find(*i);
|
||||
if(!(ci == configsPartOfDefaultBuild.end()))
|
||||
{
|
||||
fout << "\t\t{" << guid << "}." << *i
|
||||
<< "|" << this->GetPlatformName() << ".Build.0 = " << *i << "|"
|
||||
|
|
|
@ -74,9 +74,9 @@ protected:
|
|||
static cmIDEFlagTable const* GetExtraFlagTableVS8();
|
||||
virtual void WriteSLNHeader(std::ostream& fout);
|
||||
virtual void WriteSolutionConfigurations(std::ostream& fout);
|
||||
virtual void WriteProjectConfigurations(std::ostream& fout,
|
||||
const char* name,
|
||||
bool partOfDefaultBuild,
|
||||
virtual void WriteProjectConfigurations(
|
||||
std::ostream& fout, const char* name,
|
||||
const std::set<std::string>& configsPartOfDefaultBuild,
|
||||
const char* platformMapping = NULL);
|
||||
virtual bool ComputeTargetDepends();
|
||||
virtual void WriteProjectDepends(std::ostream& fout, const char* name,
|
||||
|
|
|
@ -157,6 +157,8 @@ public:
|
|||
"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\". "
|
||||
"This can also be set on a per-configuration basis using "
|
||||
"EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>."
|
||||
;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue