CMake/Source/cmLinkLibrariesCommand.cxx
Stephen Kelly 4079ba20d9 cmMakefile: Implement LinkLibraries as an internal property
cmMakefile should not have logic particular to individual cmake
commands.  The link_libraries() command is generally obsolete in favor
of target_link_libraries().  An alternative language for CMake probably
would not offer the former.  The quirks and historical behaviors of the
current language should be separate from the core classes of CMake to
allow replacing the language.
2016-10-07 22:07:50 +02:00

38 lines
1.2 KiB
C++

/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmLinkLibrariesCommand.h"
// cmLinkLibrariesCommand
bool cmLinkLibrariesCommand::InitialPass(std::vector<std::string> const& args,
cmExecutionStatus&)
{
if (args.empty()) {
return true;
}
// add libraries, nothe that there is an optional prefix
// of debug and optimized than can be used
for (std::vector<std::string>::const_iterator i = args.begin();
i != args.end(); ++i) {
if (*i == "debug") {
++i;
if (i == args.end()) {
this->SetError("The \"debug\" argument must be followed by "
"a library");
return false;
}
this->Makefile->AppendProperty("LINK_LIBRARIES", "debug");
} else if (*i == "optimized") {
++i;
if (i == args.end()) {
this->SetError("The \"optimized\" argument must be followed by "
"a library");
return false;
}
this->Makefile->AppendProperty("LINK_LIBRARIES", "optimized");
}
this->Makefile->AppendProperty("LINK_LIBRARIES", i->c_str());
}
return true;
}