| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /*=========================================================================
- Program: Insight Segmentation & Registration Toolkit
- Module: $RCSfile$
- Language: C++
- Date: $Date$
- Version: $Revision$
- Copyright (c) 2002 Insight Consortium. All rights reserved.
- See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notices for more information.
- =========================================================================*/
- #ifndef cmMSDotNETGenerator_h
- #define cmMSDotNETGenerator_h
- #include "cmStandardIncludes.h"
- #include "cmMakefileGenerator.h"
- #include "cmTarget.h"
- #include "cmSourceGroup.h"
- /** \class cmMSDotNETGenerator
- * \brief Write a Microsoft Visual C++ DSP (project) file.
- *
- * cmMSDotNETGenerator produces a Microsoft Visual C++ DSP (project) file.
- */
- class cmMSDotNETGenerator : public cmMakefileGenerator
- {
- public:
- ///! Constructor sets the generation of SLN files on.
- cmMSDotNETGenerator();
- ///! Destructor.
- ~cmMSDotNETGenerator();
-
- ///! Get the name for the generator.
- virtual const char* GetName() {return "Visual Studio 7";}
- ///! virtual copy constructor
- virtual cmMakefileGenerator* CreateObject()
- { return new cmMSDotNETGenerator;}
-
- ///! Produce the makefile (in this case a Microsoft Visual C++ project).
- virtual void GenerateMakefile();
- ///! controls the SLN/DSP settings
- virtual void SetLocal(bool);
- /**
- * Turn off the generation of a Microsoft Visual C++ SLN file.
- * This causes only the dsp file to be created. This
- * is used to run as a command line program from inside visual
- * studio.
- */
- void BuildSLNOff() {m_BuildSLN = false;}
- ///! Turn on the generation of a Microsoft Visual C++ SLN file.
- void BuildProjOn() {m_BuildSLN = true;}
- /**
- * Try to determine system infomation such as shared library
- * extension, pthreads, byte order etc.
- */
- virtual void ComputeSystemInfo();
- protected:
- /**
- * Return array of created VCProj names in a STL vector.
- * Each executable must have its own dsp.
- */
- std::vector<std::string> GetCreatedProjectNames()
- {
- return m_CreatedProjectNames;
- }
- /**
- * Return the makefile.
- */
- cmMakefile* GetMakefile()
- {
- return m_Makefile;
- }
- private:
- void CreateSingleVCProj(const char *lname, cmTarget &tgt);
- void WriteVCProjFile(std::ostream& fout, const char *libName,
- cmTarget &tgt);
- void WriteVCProjBeginGroup(std::ostream& fout,
- const char* group,
- const char* filter);
- void WriteVCProjEndGroup(std::ostream& fout);
- void WriteProjectStart(std::ostream& fout, const char *libName,
- const cmTarget &tgt, std::vector<cmSourceGroup> &sgs);
- void WriteConfigurations(std::ostream& fout,
- const char *libName,
- const cmTarget &tgt);
- void WriteConfiguration(std::ostream& fout,
- const char* configName,
- const char* libName,
- const cmTarget &tgt);
- void OutputDefineFlags(std::ostream& fout);
- void WriteVCProjFooter(std::ostream& fout);
- void AddVCProjBuildRule(cmSourceGroup&);
- void WriteCustomRule(std::ostream& fout,
- const char* source,
- const char* command,
- const std::set<std::string>& depends,
- const std::set<std::string>& outputs,
- const char* extraFlags);
- void OutputTargetRules(std::ostream& fout,
- const cmTarget &target,
- const char *libName);
- std::string CombineCommands(const cmSourceGroup::Commands &commands,
- cmSourceGroup::CommandFiles &totalCommand,
- const char *source);
-
- virtual void OutputSLNFile();
- void OutputVCProjFile();
- std::string CreateGUID(const char* project);
- void WriteSLNFile(std::ostream& fout);
- void WriteSLNHeader(std::ostream& fout);
- void WriteProject(std::ostream& fout,
- const char* name, const char* path,
- cmMSDotNETGenerator* project, const cmTarget &t);
- void WriteProjectDepends(std::ostream& fout,
- const char* name, const char* path,
- cmMSDotNETGenerator* project, const cmTarget &t);
- void WriteProjectConfigurations(std::ostream& fout, const char* name);
- void WriteExternalProject(std::ostream& fout,
- const char* name, const char* path,
- const std::vector<std::string>& dependencies);
- void WriteSLNFooter(std::ostream& fout);
- void OutputBuildTool(std::ostream& fout, const char* configName,
- const char* libname, const cmTarget& t);
- void OutputLibraryDirectories(std::ostream& fout,
- const char* configName,
- const char* libName,
- const cmTarget &target);
- void OutputModuleDefinitionFile(std::ostream& fout,
- const cmTarget &target);
- void OutputLibraries(std::ostream& fout,
- const char* configName,
- const char* libName,
- const cmTarget &target);
- std::string ConvertToXMLOutputPath(const char* path);
- private:
- std::map<cmStdString, cmStdString> m_GUIDMap;
- bool m_BuildSLN;
- std::string m_LibraryOutputPath;
- std::string m_ExecutableOutputPath;
- std::string m_ModuleDefinitionFile;
- std::vector<std::string> m_Configurations;
- std::string m_VCProjHeaderTemplate;
- std::string m_VCProjFooterTemplate;
- std::vector<std::string> m_CreatedProjectNames;
- };
- #endif
|