| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #include "cmAddDependenciesCommand.h"
- #include "cmExecutionStatus.h"
- #include "cmMakefile.h"
- #include "cmMessageType.h"
- #include "cmRange.h"
- #include "cmStringAlgorithms.h"
- #include "cmTarget.h"
- bool cmAddDependenciesCommand(std::vector<std::string> const& args,
- cmExecutionStatus& status)
- {
- if (args.size() < 2) {
- status.SetError("called with incorrect number of arguments");
- return false;
- }
- cmMakefile& mf = status.GetMakefile();
- std::string const& target_name = args[0];
- if (mf.IsAlias(target_name)) {
- mf.IssueMessage(
- MessageType::FATAL_ERROR,
- cmStrCat("Cannot add target-level dependencies to alias target \"",
- target_name, "\".\n"));
- }
- if (cmTarget* target = mf.FindTargetToUse(target_name)) {
- // skip over target_name
- for (std::string const& arg : cmMakeRange(args).advance(1)) {
- target->AddUtility(arg, &mf);
- }
- } else {
- mf.IssueMessage(
- MessageType::FATAL_ERROR,
- cmStrCat(
- "Cannot add target-level dependencies to non-existent "
- "target \"",
- target_name,
- "\".\nThe add_dependencies works for "
- "top-level logical targets created by the add_executable, "
- "add_library, or add_custom_target commands. If you want to add "
- "file-level dependencies see the DEPENDS option of the "
- "add_custom_target and add_custom_command commands."));
- }
- return true;
- }
|