| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file Copyright.txt or https://cmake.org/licensing for details. */ | |
| #include "cmTargetPropertyComputer.h" | |
| #include <sstream> | |
| #include "cmMakefile.h" | |
| #include "cmMessageType.h" | |
| #include "cmPolicies.h" | |
| bool cmTargetPropertyComputer::HandleLocationPropertyPolicy( | |
| std::string const& tgtName, cmMakefile const& mf) | |
| { | |
| std::ostringstream e; | |
| const char* modal = nullptr; | |
| MessageType messageType = MessageType::AUTHOR_WARNING; | |
| switch (mf.GetPolicyStatus(cmPolicies::CMP0026)) { | |
| case cmPolicies::WARN: | |
| e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0026) << "\n"; | |
| modal = "should"; | |
| CM_FALLTHROUGH; | |
| case cmPolicies::OLD: | |
| break; | |
| case cmPolicies::REQUIRED_ALWAYS: | |
| case cmPolicies::REQUIRED_IF_USED: | |
| case cmPolicies::NEW: | |
| modal = "may"; | |
| messageType = MessageType::FATAL_ERROR; | |
| break; | |
| } | |
| if (modal) { | |
| e << "The LOCATION property " << modal << " not be read from target \"" | |
| << tgtName | |
| << "\". Use the target name directly with " | |
| "add_custom_command, or use the generator expression $<TARGET_FILE>, " | |
| "as appropriate.\n"; | |
| mf.IssueMessage(messageType, e.str()); | |
| } | |
| return messageType != MessageType::FATAL_ERROR; | |
| } |