cmLinkLineComputer: Extract from cmLocalGenerator

CMake has several classes which have too many responsibilities.
cmLocalGenerator is one of them.  Start to extract the link line
computation.  Create generator-specific implementations of the interface
to account for generator-specific behavior.

Unfortunately MSVC60 has different behavior to everything else and CMake
still generates makefiles for it.  Isolate it with MSVC60-specific
names.
This commit is contained in:
Stephen Kelly
2016-10-08 12:21:36 +02:00
parent 2e5d1990f3
commit 5b361fdda0
26 changed files with 282 additions and 79 deletions

View File

@@ -0,0 +1,27 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmLinkLineComputer.h"
#include "cmOutputConverter.h"
cmLinkLineComputer::cmLinkLineComputer(cmState::Directory stateDir)
: StateDir(stateDir)
{
}
cmLinkLineComputer::~cmLinkLineComputer()
{
}
std::string cmLinkLineComputer::ConvertToLinkReference(
std::string const& lib) const
{
std::string relLib = lib;
if (cmOutputConverter::ContainedInDirectory(
this->StateDir.GetCurrentBinary(), lib, this->StateDir)) {
relLib = cmOutputConverter::ForceToRelativePath(
this->StateDir.GetCurrentBinary(), lib);
}
return relLib;
}