ENH: put the 64 bit paths first
[cmake.git] / Source / cmGlobalVisualStudio6Generator.h
blob1dde0c2fd4eaf0f9971de19a2f070d85806c0f37
1 /*=========================================================================
3 Program: CMake - Cross-Platform Makefile Generator
4 Module: $RCSfile: cmGlobalVisualStudio6Generator.h,v $
5 Language: C++
6 Date: $Date: 2007-06-28 13:09:26 $
7 Version: $Revision: 1.29 $
9 Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
10 See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notices for more information.
16 =========================================================================*/
17 #ifndef cmGlobalVisualStudio6Generator_h
18 #define cmGlobalVisualStudio6Generator_h
20 #include "cmGlobalVisualStudioGenerator.h"
22 class cmTarget;
24 /** \class cmGlobalVisualStudio6Generator
25 * \brief Write a Unix makefiles.
27 * cmGlobalVisualStudio6Generator manages UNIX build process for a tree
29 class cmGlobalVisualStudio6Generator : public cmGlobalVisualStudioGenerator
31 public:
32 cmGlobalVisualStudio6Generator();
33 static cmGlobalGenerator* New() {
34 return new cmGlobalVisualStudio6Generator; }
36 ///! Get the name for the generator.
37 virtual const char* GetName() const {
38 return cmGlobalVisualStudio6Generator::GetActualName();}
39 static const char* GetActualName() {return "Visual Studio 6";}
41 /** Get the documentation entry for this generator. */
42 virtual void GetDocumentation(cmDocumentationEntry& entry) const;
44 ///! Create a local generator appropriate to this Global Generator
45 virtual cmLocalGenerator *CreateLocalGenerator();
47 /**
48 * Try to determine system infomation such as shared library
49 * extension, pthreads, byte order etc.
51 virtual void EnableLanguage(std::vector<std::string>const& languages,
52 cmMakefile *, bool optional);
54 /**
55 * Try running cmake and building a file. This is used for dynalically
56 * loaded commands, not as part of the usual build process.
58 virtual std::string GenerateBuildCommand(const char* makeProgram,
59 const char *projectName,
60 const char* additionalOptions,
61 const char *targetName,
62 const char* config,
63 bool ignoreErrors,
64 bool fast);
66 /**
67 * Generate the all required files for building this project/tree. This
68 * basically creates a series of LocalGenerators for each directory and
69 * requests that they Generate.
71 virtual void Generate();
73 /**
74 * Generate the DSW workspace file.
76 virtual void OutputDSWFile();
77 virtual void OutputDSWFile(cmLocalGenerator* root,
78 std::vector<cmLocalGenerator*>& generators);
79 virtual void WriteDSWFile(std::ostream& fout,
80 cmLocalGenerator* root,
81 std::vector<cmLocalGenerator*>& generators);
83 /** Append the subdirectory for the given configuration. */
84 virtual void AppendDirectoryForConfig(const char* prefix,
85 const char* config,
86 const char* suffix,
87 std::string& dir);
89 ///! What is the configurations directory variable called?
90 virtual const char* GetCMakeCFGInitDirectory() { return "$(IntDir)"; }
91 private:
92 void GenerateConfigurations(cmMakefile* mf);
93 void WriteDSWFile(std::ostream& fout);
94 void WriteDSWHeader(std::ostream& fout);
95 void WriteProject(std::ostream& fout,
96 const char* name, const char* path, cmTarget &t);
97 void WriteExternalProject(std::ostream& fout,
98 const char* name, const char* path,
99 const std::vector<std::string>& dependencies);
100 void WriteDSWFooter(std::ostream& fout);
103 #endif