/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #include "cmLinkLibrariesCommand.h" #include "cmDiagnostics.h" #include "cmExecutionStatus.h" #include "cmMakefile.h" bool cmLinkLibrariesCommand(std::vector const& args, cmExecutionStatus& status) { cmMakefile& mf = status.GetMakefile(); mf.IssueDiagnostic(cmDiagnostics::CMD_NON_TARGET_DIRECTIVE, "Use of non-target directives is not recommended. " "Consider target_link_libraries instead."); if (args.empty()) { return true; } // add libraries, note that there is an optional prefix // of debug and optimized than can be used for (auto i = args.begin(); i != args.end(); ++i) { if (*i == "debug") { ++i; if (i == args.end()) { status.SetError("The \"debug\" argument must be followed by " "a library"); return false; } mf.AppendProperty("LINK_LIBRARIES", "debug"); } else if (*i == "optimized") { ++i; if (i == args.end()) { status.SetError("The \"optimized\" argument must be followed by " "a library"); return false; } mf.AppendProperty("LINK_LIBRARIES", "optimized"); } mf.AppendProperty("LINK_LIBRARIES", *i); } return true; }