Merge topic 'vs-old-express-no-folders'

571bedec VS: Ignore USE_FOLDER property on VS versions that do not support it
0c58d2d0 VS: Detect VS 8 and 9 Express editions
This commit is contained in:
Brad King 2016-04-27 09:15:20 -04:00 committed by CMake Topic Stage
commit 8a00c16b59
8 changed files with 28 additions and 17 deletions

View File

@ -608,12 +608,6 @@ void cmGlobalVisualStudio10Generator::PathTooLong(
} }
} }
//----------------------------------------------------------------------------
bool cmGlobalVisualStudio10Generator::UseFolderProperty()
{
return IsExpressEdition() ? false : cmGlobalGenerator::UseFolderProperty();
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmGlobalVisualStudio10Generator::IsNsightTegra() const bool cmGlobalVisualStudio10Generator::IsNsightTegra() const
{ {

View File

@ -56,9 +56,6 @@ public:
cmMakefile *, bool optional); cmMakefile *, bool optional);
virtual void WriteSLNHeader(std::ostream& fout); virtual void WriteSLNHeader(std::ostream& fout);
/** Is the installed VS an Express edition? */
bool IsExpressEdition() const { return this->ExpressEdition; }
/** Generating for Nsight Tegra VS plugin? */ /** Generating for Nsight Tegra VS plugin? */
bool IsNsightTegra() const; bool IsNsightTegra() const;
std::string GetNsightTegraVersion() const; std::string GetNsightTegraVersion() const;
@ -129,9 +126,6 @@ protected:
bool SystemIsWindowsCE; bool SystemIsWindowsCE;
bool SystemIsWindowsPhone; bool SystemIsWindowsPhone;
bool SystemIsWindowsStore; bool SystemIsWindowsStore;
bool ExpressEdition;
bool UseFolderProperty();
private: private:
class Factory; class Factory;

View File

@ -239,10 +239,10 @@ void cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream& fout)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmGlobalVisualStudio11Generator::UseFolderProperty() bool cmGlobalVisualStudio11Generator::UseFolderProperty()
{ {
// Intentionally skip over the parent class implementation and call the // Intentionally skip up to the top-level class implementation.
// grand-parent class's implementation. Folders are not supported by the // Folders are not supported by the Express editions in VS10 and earlier,
// Express editions in VS10 and earlier, but they are in VS11 Express. // but they are in VS11 Express and above.
return cmGlobalVisualStudio8Generator::UseFolderProperty(); return cmGlobalGenerator::UseFolderProperty();
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -75,6 +75,9 @@ protected:
const std::set<std::string>& depends); const std::set<std::string>& depends);
virtual void WriteSLNHeader(std::ostream& fout); virtual void WriteSLNHeader(std::ostream& fout);
// Folders are not supported by VS 7.1.
virtual bool UseFolderProperty() { return false; }
std::string ProjectConfigurationSectionName; std::string ProjectConfigurationSectionName;
}; };
#endif #endif

View File

@ -103,6 +103,10 @@ cmGlobalVisualStudio8Generator::cmGlobalVisualStudio8Generator(cmake* cm,
this->Name = name; this->Name = name;
this->ExtraFlagTable = this->GetExtraFlagTableVS8(); this->ExtraFlagTable = this->GetExtraFlagTableVS8();
this->Version = VS8; this->Version = VS8;
std::string vc8Express;
this->ExpressEdition = cmSystemTools::ReadRegistryValue(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\8.0\\Setup\\VC;"
"ProductDir", vc8Express, cmSystemTools::KeyWOW64_32);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -189,6 +193,12 @@ void cmGlobalVisualStudio8Generator::Configure()
this->cmGlobalVisualStudio7Generator::Configure(); this->cmGlobalVisualStudio7Generator::Configure();
} }
//----------------------------------------------------------------------------
bool cmGlobalVisualStudio8Generator::UseFolderProperty()
{
return IsExpressEdition() ? false : cmGlobalGenerator::UseFolderProperty();
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
std::string cmGlobalVisualStudio8Generator::GetUserMacrosDirectory() std::string cmGlobalVisualStudio8Generator::GetUserMacrosDirectory()
{ {

View File

@ -66,6 +66,9 @@ public:
virtual bool TargetsWindowsCE() const { virtual bool TargetsWindowsCE() const {
return !this->WindowsCEVersion.empty(); } return !this->WindowsCEVersion.empty(); }
/** Is the installed VS an Express edition? */
bool IsExpressEdition() const { return this->ExpressEdition; }
protected: protected:
virtual void AddExtraIDETargets(); virtual void AddExtraIDETargets();
virtual const char* GetIDEVersion() { return "8.0"; } virtual const char* GetIDEVersion() { return "8.0"; }
@ -94,8 +97,11 @@ protected:
const char* path, const char* path,
const cmGeneratorTarget *t); const cmGeneratorTarget *t);
bool UseFolderProperty();
std::string Name; std::string Name;
std::string WindowsCEVersion; std::string WindowsCEVersion;
bool ExpressEdition;
private: private:
class Factory; class Factory;

View File

@ -104,6 +104,10 @@ cmGlobalVisualStudio9Generator::cmGlobalVisualStudio9Generator(cmake* cm,
: cmGlobalVisualStudio8Generator(cm, name, platformName) : cmGlobalVisualStudio8Generator(cm, name, platformName)
{ {
this->Version = VS9; this->Version = VS9;
std::string vc9Express;
this->ExpressEdition = cmSystemTools::ReadRegistryValue(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\9.0\\Setup\\VC;"
"ProductDir", vc9Express, cmSystemTools::KeyWOW64_32);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -92,7 +92,7 @@ void cmGlobalVisualStudioGenerator::AddExtraIDETargets()
// //
// Organize in the "predefined targets" folder: // Organize in the "predefined targets" folder:
// //
if (this->UseFolderProperty() && this->GetVersion() > VS71) if (this->UseFolderProperty())
{ {
allBuild->SetProperty("FOLDER", this->GetPredefinedTargetsFolder()); allBuild->SetProperty("FOLDER", this->GetPredefinedTargetsFolder());
} }