mirror of
https://github.com/reactos/CMake.git
synced 2025-01-09 13:10:51 +00:00
01e979acef
Since commit 328c0f65
(Simplify cmVisualStudio10TargetGenerator source
classification, 2012-03-19) the VS 10 generator uses the
cmGeneratorTarget source classification instead of directly getting the
list of source files from the target. This accidentally dropped the
CMakeLists.txt files from generated projects because they are added too
late for cmGeneratorTarget.
All generator-specific source files must be added to targets prior to
cmGeneratorTarget construction. Refactor addition of the CMakeLists.txt
files with CMake re-run custom commands to take place before normal
generation begins, and therefore early enough to be included in the
cmGeneratorTarget classification.
75 lines
2.2 KiB
C++
75 lines
2.2 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License for more information.
|
|
============================================================================*/
|
|
#ifndef cmLocalVisualStudioGenerator_h
|
|
#define cmLocalVisualStudioGenerator_h
|
|
|
|
#include "cmLocalGenerator.h"
|
|
|
|
#include <cmsys/auto_ptr.hxx>
|
|
|
|
class cmSourceFile;
|
|
class cmSourceGroup;
|
|
class cmCustomCommand;
|
|
|
|
/** \class cmLocalVisualStudioGenerator
|
|
* \brief Base class for Visual Studio generators.
|
|
*
|
|
* cmLocalVisualStudioGenerator provides functionality common to all
|
|
* Visual Studio generators.
|
|
*/
|
|
class cmLocalVisualStudioGenerator : public cmLocalGenerator
|
|
{
|
|
public:
|
|
/** Known versions of Visual Studio. */
|
|
enum VSVersion
|
|
{
|
|
VS6 = 60,
|
|
VS7 = 70,
|
|
VS71 = 71,
|
|
VS8 = 80,
|
|
VS9 = 90,
|
|
VS10 = 100,
|
|
VS11 = 110
|
|
};
|
|
|
|
cmLocalVisualStudioGenerator(VSVersion v);
|
|
virtual ~cmLocalVisualStudioGenerator();
|
|
|
|
/** Construct a script from the given list of command lines. */
|
|
std::string ConstructScript(cmCustomCommand const& cc,
|
|
const char* configName,
|
|
const char* newline = "\n");
|
|
|
|
/** Label to which to jump in a batch file after a failed step in a
|
|
sequence of custom commands. */
|
|
const char* GetReportErrorLabel() const;
|
|
|
|
/** Version of Visual Studio. */
|
|
VSVersion GetVersion() const { return this->Version; }
|
|
|
|
virtual std::string ComputeLongestObjectDirectory(cmTarget&) const = 0;
|
|
|
|
virtual void AddCMakeListsRules() = 0;
|
|
|
|
protected:
|
|
virtual const char* ReportErrorLabel() const;
|
|
virtual bool CustomCommandUseLocal() const { return false; }
|
|
|
|
/** Construct a custom command to make exe import lib dir. */
|
|
cmsys::auto_ptr<cmCustomCommand>
|
|
MaybeCreateImplibDir(cmTarget& target, const char* config, bool isFortran);
|
|
|
|
VSVersion Version;
|
|
};
|
|
|
|
#endif
|