BUG: fix for 4524, add support for target properties to set vs source code control information

This commit is contained in:
Bill Hoffman 2008-10-07 16:23:20 -04:00
parent db0e1fd675
commit 637418a835
2 changed files with 32 additions and 3 deletions

View File

@ -1832,6 +1832,26 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
{
keyword = "Win32Proj";
}
const char* vsProjectname = target.GetProperty("VS_SCC_PROJECTNAME");
if (!vsProjectname)
{
vsProjectname = "";
}
const char* vsLocalpath = target.GetProperty("VS_SCC_LOCALPATH");
if (!vsLocalpath)
{
vsLocalpath = "";
}
const char* vsProvider = target.GetProperty("VS_SCC_PROVIDER");
std::string providerString;
if (!vsProvider)
{
providerString = "";
}
else
{
providerString = "\tSccProvider=\"" + std::string(vsProvider) + "\"\n";
}
cmGlobalVisualStudio7Generator* gg =
static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
fout << "\tName=\"" << projLabel << "\"\n";
@ -1839,9 +1859,15 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
{
fout << "\tProjectGUID=\"{" << gg->GetGUID(libName) << "}\"\n";
}
fout << "\tSccProjectName=\"\"\n"
<< "\tSccLocalPath=\"\"\n"
<< "\tKeyword=\"" << keyword << "\">\n"
// if we have all the required Source code control tags
// then add that to the project
if(vsProvider && vsLocalpath && vsProjectname)
{
fout << "\tSccProjectName=\"" << vsProjectname << "\"\n"
<< "\tSccLocalPath=\"" << vsLocalpath << "\"\n"
<< "\tSccProvider=\"" << providerString << "\"\n";
}
fout << "\tKeyword=\"" << keyword << "\">\n"
<< "\t<Platforms>\n"
<< "\t\t<Platform\n\t\t\tName=\"" << this->PlatformName << "\"/>\n"
<< "\t</Platforms>\n";

View File

@ -145,6 +145,9 @@ public:
"the target in an IDE like visual studio. VS_KEYWORD can be set "
"to change the visual studio keyword, for example QT integration "
"works better if this is set to Qt4VSv1.0.\n"
"VS_SCC_PROJECTNAME, VS_SCC_LOCALPATH, VS_SCC_PROVIDER can be set "
"to add support for source control bindings in a Visual Studio "
"project file.\n"
"When a library is built CMake by default generates code to remove "
"any existing library using all possible names. This is needed "
"to support libraries that switch between STATIC and SHARED by "