1 /*=========================================================================
3 Program: CMake - Cross-Platform Makefile Generator
4 Module: $RCSfile: cmGlobalVisualStudioGenerator.h,v $
6 <<<<<<< cmGlobalVisualStudioGenerator.h
7 Date: $Date: 2008/02/15 16:49:58 $
8 Version: $Revision: 1.7 $
10 Date: $Date: 2008-04-30 17:26:03 $
11 Version: $Revision: 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
36 cmGlobalVisualStudioGenerator();
37 virtual ~cmGlobalVisualStudioGenerator();
40 * Basic generate implementation for all VS generators.
42 virtual void Generate();
45 * Configure CMake's Visual Studio macros file into the user's Visual
46 * Studio macros directory.
48 virtual void ConfigureCMakeVisualStudioMacros();
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();
58 * What is the reg key path to "vsmacros" for this version of Visual
61 virtual std::string
GetUserMacrosRegKeyBase();
63 enum MacroName
{MacroReload
, MacroStop
};
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
);
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
83 virtual bool VSLinksDependencies() const { return true; }
86 void FixUtilityDependsForTarget(cmTarget
& target
);
87 void CreateUtilityDependTarget(cmTarget
& target
);
88 bool CheckTargetLinks(cmTarget
& target
, const char* name
);