Resync
[CMakeLuaTailorHgBridge.git] / CMakeLua / Source / cmGlobalVisualStudioGenerator.h
blob70d561043a04f095d2dccaaa086ec0052233cbec
1 /*=========================================================================
3 Program: CMake - Cross-Platform Makefile Generator
4 Module: $RCSfile: cmGlobalVisualStudioGenerator.h,v $
5 Language: C++
6 <<<<<<< cmGlobalVisualStudioGenerator.h
7 Date: $Date: 2008/02/15 16:49:58 $
8 Version: $Revision: 1.7 $
9 =======
10 Date: $Date: 2008-04-30 17:26:03 $
11 Version: $Revision: 1.8 $
12 >>>>>>> 1.8
14 Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
15 See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
17 This software is distributed WITHOUT ANY WARRANTY; without even
18 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
19 PURPOSE. See the above copyright notices for more information.
21 =========================================================================*/
22 #ifndef cmGlobalVisualStudioGenerator_h
23 #define cmGlobalVisualStudioGenerator_h
25 #include "cmGlobalGenerator.h"
27 /** \class cmGlobalVisualStudioGenerator
28 * \brief Base class for global Visual Studio generators.
30 * cmGlobalVisualStudioGenerator provides functionality common to all
31 * global Visual Studio generators.
33 class cmGlobalVisualStudioGenerator : public cmGlobalGenerator
35 public:
36 cmGlobalVisualStudioGenerator();
37 virtual ~cmGlobalVisualStudioGenerator();
39 /**
40 * Basic generate implementation for all VS generators.
42 virtual void Generate();
44 /**
45 * Configure CMake's Visual Studio macros file into the user's Visual
46 * Studio macros directory.
48 virtual void ConfigureCMakeVisualStudioMacros();
50 /**
51 * Where does this version of Visual Studio look for macros for the
52 * current user? Returns the empty string if this version of Visual
53 * Studio does not implement support for VB macros.
55 virtual std::string GetUserMacrosDirectory();
57 /**
58 * What is the reg key path to "vsmacros" for this version of Visual
59 * Studio?
61 virtual std::string GetUserMacrosRegKeyBase();
63 enum MacroName {MacroReload, MacroStop};
65 /**
66 * Call the ReloadProjects macro if necessary based on
67 * GetFilesReplacedDuringGenerate results.
69 virtual void CallVisualStudioMacro(MacroName m,
70 const char* vsSolutionFile = 0);
72 // return true if target is fortran only
73 bool TargetIsFortranOnly(cmTarget& t);
75 protected:
76 virtual void CreateGUID(const char*) {}
77 void FixUtilityDepends();
78 const char* GetUtilityForTarget(cmTarget& target, const char*);
80 // Does this VS version link targets to each other if there are
81 // dependencies in the SLN file? This was done for VS versions
82 // below 8.
83 virtual bool VSLinksDependencies() const { return true; }
85 private:
86 void FixUtilityDependsForTarget(cmTarget& target);
87 void CreateUtilityDependTarget(cmTarget& target);
88 bool CheckTargetLinks(cmTarget& target, const char* name);
91 #endif