| /* 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, false, &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; |
| } |