bc43b0f2a4
In VS 8 and greater this commit implements add_dependencies(myexe mylib) # depend without linking by adding the LinkLibraryDependencies="false" option to project files. Previously the above code would cause myexe to link to mylib in VS 8 and greater. This option prevents dependencies specified only in the solution from being linked. We already specify the real link library dependencies in the project files, and any project depending on this to link would not have worked in Makefile generators. We were already avoiding this problem in VS 7.1 and below by inserting intermediate mylib_UTILITY targets. It was more important for those versions because if a static library depended on another library the librarian would copy the dependees into the depender! This is no longer the case with VS 8 and above so we do not need that workaround. See issue #9732.
82 lines
2.8 KiB
C++
82 lines
2.8 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 cmGlobalVisualStudio8Generator_h
|
|
#define cmGlobalVisualStudio8Generator_h
|
|
|
|
#include "cmGlobalVisualStudio71Generator.h"
|
|
|
|
|
|
/** \class cmGlobalVisualStudio8Generator
|
|
* \brief Write a Unix makefiles.
|
|
*
|
|
* cmGlobalVisualStudio8Generator manages UNIX build process for a tree
|
|
*/
|
|
class cmGlobalVisualStudio8Generator : public cmGlobalVisualStudio71Generator
|
|
{
|
|
public:
|
|
cmGlobalVisualStudio8Generator();
|
|
static cmGlobalGenerator* New() {
|
|
return new cmGlobalVisualStudio8Generator; }
|
|
|
|
///! Get the name for the generator.
|
|
virtual const char* GetName() const {
|
|
return cmGlobalVisualStudio8Generator::GetActualName();}
|
|
static const char* GetActualName() {return "Visual Studio 8 2005";}
|
|
|
|
/** Get the documentation entry for this generator. */
|
|
virtual void GetDocumentation(cmDocumentationEntry& entry) const;
|
|
|
|
///! Create a local generator appropriate to this Global Generator
|
|
virtual cmLocalGenerator *CreateLocalGenerator();
|
|
|
|
/**
|
|
* Override Configure and Generate to add the build-system check
|
|
* target.
|
|
*/
|
|
virtual void Configure();
|
|
virtual void Generate();
|
|
|
|
/**
|
|
* Where does this version of Visual Studio look for macros for the
|
|
* current user? Returns the empty string if this version of Visual
|
|
* Studio does not implement support for VB macros.
|
|
*/
|
|
virtual std::string GetUserMacrosDirectory();
|
|
|
|
/**
|
|
* What is the reg key path to "vsmacros" for this version of Visual
|
|
* Studio?
|
|
*/
|
|
virtual std::string GetUserMacrosRegKeyBase();
|
|
|
|
/** Return true if the target project file should have the option
|
|
LinkLibraryDependencies and link to .sln dependencies. */
|
|
virtual bool NeedLinkLibraryDependencies(cmTarget& target);
|
|
|
|
protected:
|
|
virtual const char* GetIDEVersion() { return "8.0"; }
|
|
|
|
virtual bool VSLinksDependencies() const { return false; }
|
|
|
|
void AddCheckTarget();
|
|
|
|
static cmIDEFlagTable const* GetExtraFlagTableVS8();
|
|
virtual void AddPlatformDefinitions(cmMakefile* mf);
|
|
virtual void WriteSLNHeader(std::ostream& fout);
|
|
virtual void WriteSolutionConfigurations(std::ostream& fout);
|
|
virtual void WriteProjectConfigurations(std::ostream& fout,
|
|
const char* name,
|
|
bool partOfDefaultBuild);
|
|
std::string PlatformName; // Win32 or x64
|
|
};
|
|
#endif
|