2009-09-28 11:43:28 -04:00
|
|
|
/*============================================================================
|
|
|
|
CMake - Cross Platform Makefile Generator
|
|
|
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
2002-09-04 15:23:56 -04:00
|
|
|
|
2009-09-28 11:43:28 -04:00
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
|
|
see accompanying file Copyright.txt for details.
|
2002-09-04 15:23:56 -04:00
|
|
|
|
2009-09-28 11:43:28 -04:00
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
See the License for more information.
|
|
|
|
============================================================================*/
|
2002-09-04 15:23:56 -04:00
|
|
|
#include "cmGlobalVisualStudio6Generator.h"
|
|
|
|
#include "cmLocalVisualStudio6Generator.h"
|
|
|
|
#include "cmMakefile.h"
|
|
|
|
#include "cmake.h"
|
2010-08-24 18:47:56 -04:00
|
|
|
#include "cmGeneratedFileStream.h"
|
2014-01-03 22:47:13 -07:00
|
|
|
#include <cmsys/FStream.hxx>
|
2002-09-04 15:23:56 -04:00
|
|
|
|
2009-09-30 16:03:03 -04:00
|
|
|
// Utility function to make a valid VS6 *.dsp filename out
|
|
|
|
// of a CMake target name:
|
|
|
|
//
|
|
|
|
std::string GetVS6TargetName(const std::string& targetName)
|
|
|
|
{
|
|
|
|
std::string name(targetName);
|
|
|
|
|
|
|
|
// Eliminate hyphens. VS6 cannot handle hyphens in *.dsp filenames...
|
|
|
|
// Replace them with underscores.
|
|
|
|
//
|
|
|
|
cmSystemTools::ReplaceString(name, "-", "_");
|
|
|
|
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
|
2002-12-05 13:44:11 -05:00
|
|
|
cmGlobalVisualStudio6Generator::cmGlobalVisualStudio6Generator()
|
|
|
|
{
|
2013-11-13 14:27:51 -05:00
|
|
|
this->MSDevCommandInitialized = false;
|
2002-12-05 13:44:11 -05:00
|
|
|
}
|
|
|
|
|
2006-05-11 11:47:03 -04:00
|
|
|
void cmGlobalVisualStudio6Generator
|
2012-08-13 13:42:58 -04:00
|
|
|
::EnableLanguage(std::vector<std::string>const& lang,
|
|
|
|
cmMakefile *mf,
|
2007-06-28 10:22:58 -04:00
|
|
|
bool optional)
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
2012-07-21 15:37:46 +02:00
|
|
|
cmGlobalVisualStudioGenerator::AddPlatformDefinitions(mf);
|
2012-08-13 13:42:58 -04:00
|
|
|
mf->AddDefinition("CMAKE_GENERATOR_RC", "rc");
|
2004-09-15 11:31:54 -04:00
|
|
|
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
|
2002-12-20 12:59:18 -05:00
|
|
|
this->GenerateConfigurations(mf);
|
2007-06-28 09:09:26 -04:00
|
|
|
this->cmGlobalGenerator::EnableLanguage(lang, mf, optional);
|
2002-09-04 15:23:56 -04:00
|
|
|
}
|
|
|
|
|
2002-12-20 12:59:18 -05:00
|
|
|
void cmGlobalVisualStudio6Generator::GenerateConfigurations(cmMakefile* mf)
|
|
|
|
{
|
2004-08-11 16:57:27 -04:00
|
|
|
std::string fname= mf->GetRequiredDefinition("CMAKE_ROOT");
|
2002-12-20 12:59:18 -05:00
|
|
|
const char* def= mf->GetDefinition( "MSPROJECT_TEMPLATE_DIRECTORY");
|
|
|
|
if(def)
|
|
|
|
{
|
|
|
|
fname = def;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
fname += "/Templates";
|
|
|
|
}
|
|
|
|
fname += "/CMakeVisualStudio6Configurations.cmake";
|
|
|
|
if(!mf->ReadListFile(mf->GetCurrentListFile(), fname.c_str()))
|
|
|
|
{
|
|
|
|
cmSystemTools::Error("Cannot open ", fname.c_str(),
|
|
|
|
". Please copy this file from the main "
|
|
|
|
"CMake/Templates directory and edit it for "
|
|
|
|
"your build configurations.");
|
|
|
|
}
|
|
|
|
else if(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES"))
|
|
|
|
{
|
|
|
|
cmSystemTools::Error("CMAKE_CONFIGURATION_TYPES not set by ",
|
|
|
|
fname.c_str(),
|
|
|
|
". Please copy this file from the main "
|
|
|
|
"CMake/Templates directory and edit it for "
|
|
|
|
"your build configurations.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-12-04 10:35:04 -05:00
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
void cmGlobalVisualStudio6Generator::FindMakeProgram(cmMakefile* mf)
|
|
|
|
{
|
|
|
|
this->cmGlobalVisualStudioGenerator::FindMakeProgram(mf);
|
|
|
|
mf->AddDefinition("CMAKE_VS_MSDEV_COMMAND",
|
|
|
|
this->GetMSDevCommand().c_str());
|
|
|
|
}
|
|
|
|
|
2013-11-13 14:27:51 -05:00
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
std::string const& cmGlobalVisualStudio6Generator::GetMSDevCommand()
|
|
|
|
{
|
|
|
|
if(!this->MSDevCommandInitialized)
|
|
|
|
{
|
|
|
|
this->MSDevCommandInitialized = true;
|
|
|
|
this->MSDevCommand = this->FindMSDevCommand();
|
|
|
|
}
|
|
|
|
return this->MSDevCommand;
|
|
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
std::string cmGlobalVisualStudio6Generator::FindMSDevCommand()
|
|
|
|
{
|
|
|
|
std::string vscmd;
|
|
|
|
std::string vskey = this->GetRegistryBase() + "\\Setup;VsCommonDir";
|
|
|
|
if(cmSystemTools::ReadRegistryValue(vskey.c_str(), vscmd,
|
|
|
|
cmSystemTools::KeyWOW64_32))
|
|
|
|
{
|
|
|
|
cmSystemTools::ConvertToUnixSlashes(vscmd);
|
|
|
|
vscmd += "/MSDev98/Bin/";
|
|
|
|
}
|
|
|
|
vscmd += "msdev.exe";
|
|
|
|
return vscmd;
|
|
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
2013-11-15 13:33:32 -05:00
|
|
|
void
|
|
|
|
cmGlobalVisualStudio6Generator::GenerateBuildCommand(
|
|
|
|
std::vector<std::string>& makeCommand,
|
2014-02-24 17:38:55 -05:00
|
|
|
const std::string& makeProgram,
|
2014-02-07 15:40:05 -05:00
|
|
|
const std::string& projectName,
|
2014-02-24 17:38:30 -05:00
|
|
|
const std::string& /*projectDir*/,
|
2014-02-06 17:31:47 -05:00
|
|
|
const std::string& targetName,
|
2014-02-09 22:48:34 -05:00
|
|
|
const std::string& config,
|
2013-11-15 13:33:32 -05:00
|
|
|
bool /*fast*/,
|
|
|
|
std::vector<std::string> const& makeOptions
|
|
|
|
)
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
|
|
|
// now build the test
|
2013-11-13 15:12:06 -05:00
|
|
|
makeCommand.push_back(
|
|
|
|
this->SelectMakeProgram(makeProgram, this->GetMSDevCommand())
|
|
|
|
);
|
2013-11-15 13:33:32 -05:00
|
|
|
|
|
|
|
makeCommand.push_back(std::string(projectName)+".dsw");
|
|
|
|
makeCommand.push_back("/MAKE");
|
|
|
|
std::string targetArg;
|
2005-04-28 18:18:54 -04:00
|
|
|
bool clean = false;
|
2014-02-06 17:31:47 -05:00
|
|
|
std::string realTarget = targetName;
|
|
|
|
if ( realTarget == "clean" )
|
2005-04-28 18:18:54 -04:00
|
|
|
{
|
|
|
|
clean = true;
|
2014-02-06 17:31:47 -05:00
|
|
|
realTarget = "ALL_BUILD";
|
2005-04-28 18:18:54 -04:00
|
|
|
}
|
2014-02-06 17:31:47 -05:00
|
|
|
if (!realTarget.empty())
|
2002-09-10 16:49:40 -04:00
|
|
|
{
|
2014-02-06 17:31:47 -05:00
|
|
|
targetArg += realTarget;
|
2002-09-10 16:49:40 -04:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-11-15 13:33:32 -05:00
|
|
|
targetArg += "ALL_BUILD";
|
2002-09-10 16:49:40 -04:00
|
|
|
}
|
2013-11-15 13:33:32 -05:00
|
|
|
targetArg += " - ";
|
2014-02-09 22:48:34 -05:00
|
|
|
if(!config.empty())
|
2003-11-12 14:06:02 -05:00
|
|
|
{
|
2013-11-15 13:33:32 -05:00
|
|
|
targetArg += config;
|
2003-11-12 14:06:02 -05:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-11-15 13:33:32 -05:00
|
|
|
targetArg += "Debug";
|
2003-11-12 14:06:02 -05:00
|
|
|
}
|
2013-11-15 13:33:32 -05:00
|
|
|
makeCommand.push_back(targetArg);
|
2005-02-22 09:12:10 -05:00
|
|
|
if(clean)
|
|
|
|
{
|
2013-11-15 13:33:32 -05:00
|
|
|
makeCommand.push_back("/CLEAN");
|
2005-02-22 09:12:10 -05:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-11-15 13:33:32 -05:00
|
|
|
makeCommand.push_back("/BUILD");
|
2005-12-01 11:41:00 -05:00
|
|
|
}
|
2013-11-15 13:33:32 -05:00
|
|
|
makeCommand.insert(makeCommand.end(),
|
|
|
|
makeOptions.begin(), makeOptions.end());
|
2002-09-04 15:23:56 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
///! Create a local generator appropriate to this Global Generator
|
|
|
|
cmLocalGenerator *cmGlobalVisualStudio6Generator::CreateLocalGenerator()
|
|
|
|
{
|
|
|
|
cmLocalGenerator *lg = new cmLocalVisualStudio6Generator;
|
|
|
|
lg->SetGlobalGenerator(this);
|
|
|
|
return lg;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void cmGlobalVisualStudio6Generator::Generate()
|
|
|
|
{
|
|
|
|
// first do the superclass method
|
2007-04-10 13:09:03 -04:00
|
|
|
this->cmGlobalVisualStudioGenerator::Generate();
|
|
|
|
|
2002-09-04 15:23:56 -04:00
|
|
|
// Now write out the DSW
|
|
|
|
this->OutputDSWFile();
|
|
|
|
}
|
|
|
|
|
|
|
|
// Write a DSW file to the stream
|
2006-05-11 11:47:03 -04:00
|
|
|
void cmGlobalVisualStudio6Generator
|
|
|
|
::WriteDSWFile(std::ostream& fout,cmLocalGenerator* root,
|
|
|
|
std::vector<cmLocalGenerator*>& generators)
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
|
|
|
// Write out the header for a DSW file
|
|
|
|
this->WriteDSWHeader(fout);
|
2004-03-09 16:28:44 -05:00
|
|
|
|
2009-09-30 16:03:03 -04:00
|
|
|
// Collect all targets under this root generator and the transitive
|
|
|
|
// closure of their dependencies.
|
2009-10-01 10:26:54 -04:00
|
|
|
TargetDependSet projectTargets;
|
|
|
|
TargetDependSet originalTargets;
|
|
|
|
this->GetTargetSets(projectTargets, originalTargets, root, generators);
|
2009-09-30 16:03:03 -04:00
|
|
|
OrderedTargetDependSet orderedProjectTargets(projectTargets);
|
|
|
|
|
|
|
|
for(OrderedTargetDependSet::const_iterator
|
|
|
|
tt = orderedProjectTargets.begin();
|
|
|
|
tt != orderedProjectTargets.end(); ++tt)
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
2013-12-10 15:16:23 +01:00
|
|
|
cmTarget const* target = *tt;
|
2012-11-02 15:47:40 +01:00
|
|
|
if(target->GetType() == cmTarget::INTERFACE_LIBRARY)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
2009-09-30 16:03:03 -04:00
|
|
|
// Write the project into the DSW file
|
|
|
|
const char* expath = target->GetProperty("EXTERNAL_MSPROJECT");
|
|
|
|
if(expath)
|
2004-03-09 16:28:44 -05:00
|
|
|
{
|
2009-09-30 16:03:03 -04:00
|
|
|
std::string project = target->GetName();
|
|
|
|
std::string location = expath;
|
|
|
|
this->WriteExternalProject(fout, project.c_str(),
|
|
|
|
location.c_str(), target->GetUtilities());
|
2004-03-09 16:28:44 -05:00
|
|
|
}
|
2009-09-30 16:03:03 -04:00
|
|
|
else
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
2009-10-06 13:30:00 -04:00
|
|
|
std::string dspname = GetVS6TargetName(target->GetName());
|
|
|
|
std::string dir = target->GetMakefile()->GetStartOutputDirectory();
|
|
|
|
dir = root->Convert(dir.c_str(), cmLocalGenerator::START_OUTPUT);
|
|
|
|
this->WriteProject(fout, dspname.c_str(), dir.c_str(), *target);
|
2002-09-04 15:23:56 -04:00
|
|
|
}
|
|
|
|
}
|
2009-09-30 16:03:03 -04:00
|
|
|
|
2002-09-04 15:23:56 -04:00
|
|
|
// Write the footer for the DSW file
|
|
|
|
this->WriteDSWFooter(fout);
|
|
|
|
}
|
|
|
|
|
2006-05-11 11:47:03 -04:00
|
|
|
void cmGlobalVisualStudio6Generator
|
2012-08-13 13:42:58 -04:00
|
|
|
::OutputDSWFile(cmLocalGenerator* root,
|
2006-05-11 11:47:03 -04:00
|
|
|
std::vector<cmLocalGenerator*>& generators)
|
2003-11-26 14:29:53 -05:00
|
|
|
{
|
|
|
|
if(generators.size() == 0)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
2004-03-09 16:28:44 -05:00
|
|
|
std::string fname = root->GetMakefile()->GetStartOutputDirectory();
|
2003-11-26 14:29:53 -05:00
|
|
|
fname += "/";
|
2004-03-09 16:28:44 -05:00
|
|
|
fname += root->GetMakefile()->GetProjectName();
|
2003-11-26 14:29:53 -05:00
|
|
|
fname += ".dsw";
|
2014-01-03 22:47:13 -07:00
|
|
|
cmsys::ofstream fout(fname.c_str());
|
2003-11-26 14:29:53 -05:00
|
|
|
if(!fout)
|
|
|
|
{
|
|
|
|
cmSystemTools::Error("Error can not open DSW file for write: ",
|
|
|
|
fname.c_str());
|
2004-09-07 16:55:25 -04:00
|
|
|
cmSystemTools::ReportLastSystemError("");
|
2003-11-26 14:29:53 -05:00
|
|
|
return;
|
|
|
|
}
|
2004-03-09 16:28:44 -05:00
|
|
|
this->WriteDSWFile(fout, root, generators);
|
2003-11-26 14:29:53 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
// output the DSW file
|
|
|
|
void cmGlobalVisualStudio6Generator::OutputDSWFile()
|
2012-08-13 13:42:58 -04:00
|
|
|
{
|
2014-02-10 00:21:34 -05:00
|
|
|
std::map<std::string, std::vector<cmLocalGenerator*> >::iterator it;
|
2006-03-15 11:02:08 -05:00
|
|
|
for(it = this->ProjectMap.begin(); it!= this->ProjectMap.end(); ++it)
|
2003-11-26 14:29:53 -05:00
|
|
|
{
|
2004-03-09 16:28:44 -05:00
|
|
|
this->OutputDSWFile(it->second[0], it->second);
|
2003-11-26 14:29:53 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2002-09-04 15:23:56 -04:00
|
|
|
// Write a dsp file into the DSW file,
|
2012-08-13 13:42:58 -04:00
|
|
|
// Note, that dependencies from executables to
|
2002-09-04 15:23:56 -04:00
|
|
|
// the libraries it uses are also done here
|
2012-08-13 13:42:58 -04:00
|
|
|
void cmGlobalVisualStudio6Generator::WriteProject(std::ostream& fout,
|
2014-02-07 15:40:05 -05:00
|
|
|
const std::string& dspname,
|
2002-09-04 15:23:56 -04:00
|
|
|
const char* dir,
|
2013-12-10 15:16:23 +01:00
|
|
|
cmTarget const& target)
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
|
|
|
fout << "#########################################################"
|
|
|
|
"######################\n\n";
|
2012-08-13 13:42:58 -04:00
|
|
|
fout << "Project: \"" << dspname << "\"="
|
2002-09-04 15:23:56 -04:00
|
|
|
<< dir << "\\" << dspname << ".dsp - Package Owner=<4>\n\n";
|
|
|
|
fout << "Package=<5>\n{{{\n}}}\n\n";
|
|
|
|
fout << "Package=<4>\n";
|
|
|
|
fout << "{{{\n";
|
2010-08-24 18:39:36 -04:00
|
|
|
VSDependSet const& depends = this->VSTargetDepends[&target];
|
|
|
|
for(VSDependSet::const_iterator di = depends.begin();
|
|
|
|
di != depends.end(); ++di)
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
2010-08-24 18:39:36 -04:00
|
|
|
const char* name = di->c_str();
|
|
|
|
fout << "Begin Project Dependency\n";
|
|
|
|
fout << "Project_Dep_Name " << GetVS6TargetName(name) << "\n";
|
|
|
|
fout << "End Project Dependency\n";
|
2002-09-04 15:23:56 -04:00
|
|
|
}
|
|
|
|
fout << "}}}\n\n";
|
2010-08-24 18:47:56 -04:00
|
|
|
|
|
|
|
UtilityDependsMap::iterator ui = this->UtilityDepends.find(&target);
|
|
|
|
if(ui != this->UtilityDepends.end())
|
|
|
|
{
|
|
|
|
const char* uname = ui->second.c_str();
|
|
|
|
fout << "Project: \"" << uname << "\"="
|
|
|
|
<< dir << "\\" << uname << ".dsp - Package Owner=<4>\n\n";
|
|
|
|
fout <<
|
|
|
|
"Package=<5>\n{{{\n}}}\n\n"
|
|
|
|
"Package=<4>\n"
|
|
|
|
"{{{\n"
|
|
|
|
"Begin Project Dependency\n"
|
|
|
|
"Project_Dep_Name " << dspname << "\n"
|
|
|
|
"End Project Dependency\n"
|
|
|
|
"}}}\n\n";
|
|
|
|
;
|
|
|
|
}
|
2002-09-04 15:23:56 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Write a dsp file into the DSW file,
|
2012-08-13 13:42:58 -04:00
|
|
|
// Note, that dependencies from executables to
|
2002-09-04 15:23:56 -04:00
|
|
|
// the libraries it uses are also done here
|
2012-08-13 13:42:58 -04:00
|
|
|
void cmGlobalVisualStudio6Generator::WriteExternalProject(std::ostream& fout,
|
2014-02-07 15:40:05 -05:00
|
|
|
const std::string& name,
|
2002-10-07 08:23:19 -04:00
|
|
|
const char* location,
|
2014-02-10 00:21:34 -05:00
|
|
|
const std::set<std::string>& dependencies)
|
2002-09-04 15:23:56 -04:00
|
|
|
{
|
|
|
|
fout << "#########################################################"
|
|
|
|
"######################\n\n";
|
2012-08-13 13:42:58 -04:00
|
|
|
fout << "Project: \"" << name << "\"="
|
2002-09-04 15:23:56 -04:00
|
|
|
<< location << " - Package Owner=<4>\n\n";
|
|
|
|
fout << "Package=<5>\n{{{\n}}}\n\n";
|
|
|
|
fout << "Package=<4>\n";
|
|
|
|
fout << "{{{\n";
|
|
|
|
|
2012-08-13 13:42:58 -04:00
|
|
|
|
2014-02-10 00:21:34 -05:00
|
|
|
std::set<std::string>::const_iterator i, end;
|
2002-09-04 15:23:56 -04:00
|
|
|
// write dependencies.
|
|
|
|
i = dependencies.begin();
|
|
|
|
end = dependencies.end();
|
|
|
|
for(;i!= end; ++i)
|
|
|
|
{
|
|
|
|
fout << "Begin Project Dependency\n";
|
2008-12-09 16:07:10 -05:00
|
|
|
fout << "Project_Dep_Name " << GetVS6TargetName(*i) << "\n";
|
2002-09-04 15:23:56 -04:00
|
|
|
fout << "End Project Dependency\n";
|
|
|
|
}
|
|
|
|
fout << "}}}\n\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Standard end of dsw file
|
|
|
|
void cmGlobalVisualStudio6Generator::WriteDSWFooter(std::ostream& fout)
|
|
|
|
{
|
|
|
|
fout << "######################################################"
|
|
|
|
"#########################\n\n";
|
|
|
|
fout << "Global:\n\n";
|
|
|
|
fout << "Package=<5>\n{{{\n}}}\n\n";
|
|
|
|
fout << "Package=<3>\n{{{\n}}}\n\n";
|
|
|
|
fout << "#####################################################"
|
|
|
|
"##########################\n\n";
|
|
|
|
}
|
|
|
|
|
2012-08-13 13:42:58 -04:00
|
|
|
|
2002-09-04 15:23:56 -04:00
|
|
|
// ouput standard header for dsw file
|
|
|
|
void cmGlobalVisualStudio6Generator::WriteDSWHeader(std::ostream& fout)
|
|
|
|
{
|
|
|
|
fout << "Microsoft Developer Studio Workspace File, Format Version 6.00\n";
|
|
|
|
fout << "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n\n";
|
|
|
|
}
|
2003-07-07 21:52:10 -04:00
|
|
|
|
2010-08-24 18:47:56 -04:00
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
std::string
|
2013-12-10 15:16:23 +01:00
|
|
|
cmGlobalVisualStudio6Generator::WriteUtilityDepend(cmTarget const* target)
|
2010-08-24 18:47:56 -04:00
|
|
|
{
|
|
|
|
std::string pname = target->GetName();
|
|
|
|
pname += "_UTILITY";
|
|
|
|
pname = GetVS6TargetName(pname.c_str());
|
|
|
|
std::string fname = target->GetMakefile()->GetStartOutputDirectory();
|
|
|
|
fname += "/";
|
|
|
|
fname += pname;
|
|
|
|
fname += ".dsp";
|
|
|
|
cmGeneratedFileStream fout(fname.c_str());
|
|
|
|
fout.SetCopyIfDifferent(true);
|
|
|
|
fout <<
|
|
|
|
"# Microsoft Developer Studio Project File - Name=\""
|
|
|
|
<< pname << "\" - Package Owner=<4>\n"
|
|
|
|
"# Microsoft Developer Studio Generated Build File, Format Version 6.00\n"
|
|
|
|
"# ** DO NOT EDIT **\n"
|
|
|
|
"\n"
|
|
|
|
"# TARGTYPE \"Win32 (x86) Generic Project\" 0x010a\n"
|
|
|
|
"\n"
|
|
|
|
"CFG=" << pname << " - Win32 Debug\n"
|
|
|
|
"!MESSAGE \"" << pname << " - Win32 Debug\""
|
|
|
|
" (based on \"Win32 (x86) Generic Project\")\n"
|
|
|
|
"!MESSAGE \"" << pname << " - Win32 Release\" "
|
|
|
|
"(based on \"Win32 (x86) Generic Project\")\n"
|
|
|
|
"!MESSAGE \"" << pname << " - Win32 MinSizeRel\" "
|
|
|
|
"(based on \"Win32 (x86) Generic Project\")\n"
|
|
|
|
"!MESSAGE \"" << pname << " - Win32 RelWithDebInfo\" "
|
|
|
|
"(based on \"Win32 (x86) Generic Project\")\n"
|
|
|
|
"\n"
|
|
|
|
"# Begin Project\n"
|
|
|
|
"# Begin Target\n"
|
|
|
|
"# Name \"" << pname << " - Win32 Debug\"\n"
|
|
|
|
"# Name \"" << pname << " - Win32 Release\"\n"
|
|
|
|
"# Name \"" << pname << " - Win32 MinSizeRel\"\n"
|
|
|
|
"# Name \"" << pname << " - Win32 RelWithDebInfo\"\n"
|
|
|
|
"# End Target\n"
|
|
|
|
"# End Project\n"
|
|
|
|
;
|
|
|
|
return pname;
|
|
|
|
}
|
|
|
|
|
2003-07-07 21:52:10 -04:00
|
|
|
//----------------------------------------------------------------------------
|
2006-05-11 11:47:03 -04:00
|
|
|
void cmGlobalVisualStudio6Generator
|
2012-11-19 16:42:24 +01:00
|
|
|
::GetDocumentation(cmDocumentationEntry& entry)
|
2003-07-07 21:52:10 -04:00
|
|
|
{
|
2012-11-19 16:42:24 +01:00
|
|
|
entry.Name = cmGlobalVisualStudio6Generator::GetActualName();
|
2007-10-22 12:49:09 -04:00
|
|
|
entry.Brief = "Generates Visual Studio 6 project files.";
|
2003-07-07 21:52:10 -04:00
|
|
|
}
|
2006-02-03 11:36:11 -05:00
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
void
|
|
|
|
cmGlobalVisualStudio6Generator
|
2014-02-21 19:05:55 -05:00
|
|
|
::AppendDirectoryForConfig(const std::string& prefix,
|
2014-02-09 22:48:34 -05:00
|
|
|
const std::string& config,
|
2014-02-21 19:05:55 -05:00
|
|
|
const std::string& suffix,
|
2006-03-03 12:58:48 -05:00
|
|
|
std::string& dir)
|
2006-02-03 11:36:11 -05:00
|
|
|
{
|
2014-02-09 22:48:34 -05:00
|
|
|
if(!config.empty())
|
2006-02-03 11:36:11 -05:00
|
|
|
{
|
2006-03-03 12:58:48 -05:00
|
|
|
dir += prefix;
|
2006-02-03 11:36:11 -05:00
|
|
|
dir += config;
|
2006-03-03 12:58:48 -05:00
|
|
|
dir += suffix;
|
2006-02-03 11:36:11 -05:00
|
|
|
}
|
|
|
|
}
|