cmTargetPropertyComputer.cxx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmTargetPropertyComputer.h"
  4. #include <sstream>
  5. #include "cmMakefile.h"
  6. #include "cmMessageType.h"
  7. #include "cmPolicies.h"
  8. bool cmTargetPropertyComputer::HandleLocationPropertyPolicy(
  9. std::string const& tgtName, cmMakefile const& mf)
  10. {
  11. std::ostringstream e;
  12. const char* modal = nullptr;
  13. MessageType messageType = MessageType::AUTHOR_WARNING;
  14. switch (mf.GetPolicyStatus(cmPolicies::CMP0026)) {
  15. case cmPolicies::WARN:
  16. e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0026) << "\n";
  17. modal = "should";
  18. CM_FALLTHROUGH;
  19. case cmPolicies::OLD:
  20. break;
  21. case cmPolicies::NEW:
  22. modal = "may";
  23. messageType = MessageType::FATAL_ERROR;
  24. break;
  25. }
  26. if (modal) {
  27. e << "The LOCATION property " << modal << " not be read from target \""
  28. << tgtName
  29. << "\". Use the target name directly with "
  30. "add_custom_command, or use the generator expression $<TARGET_FILE>, "
  31. "as appropriate.\n";
  32. mf.IssueMessage(messageType, e.str());
  33. }
  34. return messageType != MessageType::FATAL_ERROR;
  35. }