/*========================================================================= 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 cmDSPWriter_h #define cmDSPWriter_h #include "cmStandardIncludes.h" #include "cmMakefile.h" /** \class cmDSPWriter * \brief Generate a Microsoft DSP project file. * * cmDSPWriter generates a Microsoft DSP project file. * See the *.dsptemplate files for information on the templates * used for making the project files. */ class cmDSPWriter { public: cmDSPWriter(cmMakefile*); ~cmDSPWriter(); void OutputDSPFile(); enum BuildType {STATIC_LIBRARY, DLL, EXECUTABLE, WIN32_EXECUTABLE, UTILITY}; /** * Specify the type of the build: static, dll, or executable. */ void SetBuildType(BuildType,const char *name); /** * Return array of created DSP names in a STL vector. * Each executable must have its own dsp. */ std::vector GetCreatedProjectNames() { return m_CreatedProjectNames; } /** * Return the makefile. */ cmMakefile* GetMakefile() { return m_Makefile; } private: std::string m_DSPHeaderTemplate; std::string m_DSPFooterTemplate; std::vector m_CreatedProjectNames; void CreateSingleDSP(const char *lname, cmTarget &tgt); void WriteDSPFile(std::ostream& fout, const char *libName, cmTarget &tgt); void WriteDSPBeginGroup(std::ostream& fout, const char* group, const char* filter); void WriteDSPEndGroup(std::ostream& fout); void WriteDSPHeader(std::ostream& fout, const char *libName, const cmTarget &tgt, std::vector &sgs); void WriteDSPFooter(std::ostream& fout); void AddDSPBuildRule(cmSourceGroup&); void WriteCustomRule(std::ostream& fout, const char* source, const char* command, const std::set& depends, const std::set& outputs, const char* flags); std::string CreateTargetRules(const cmTarget &target, const char *libName); std::string CombineCommands(const cmSourceGroup::Commands &commands, cmSourceGroup::CommandFiles &totalCommand, const char *source); std::string m_IncludeOptions; cmMakefile* m_Makefile; std::vector m_Configurations; }; #endif