cmLinkLineComputer.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmLinkLineComputer_h
  4. #define cmLinkLineComputer_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <string>
  7. #include "cmStateDirectory.h"
  8. class cmComputeLinkInformation;
  9. class cmGeneratorTarget;
  10. class cmOutputConverter;
  11. class cmLinkLineComputer
  12. {
  13. public:
  14. cmLinkLineComputer(cmOutputConverter* outputConverter,
  15. cmStateDirectory const& stateDir);
  16. virtual ~cmLinkLineComputer();
  17. cmLinkLineComputer(cmLinkLineComputer const&) = delete;
  18. cmLinkLineComputer& operator=(cmLinkLineComputer const&) = delete;
  19. void SetUseWatcomQuote(bool useWatcomQuote);
  20. void SetForResponse(bool forResponse);
  21. void SetRelink(bool relink);
  22. virtual std::string ConvertToLinkReference(std::string const& input) const;
  23. std::string ComputeLinkPath(cmComputeLinkInformation& cli,
  24. std::string const& libPathFlag,
  25. std::string const& libPathTerminator);
  26. std::string ComputeFrameworkPath(cmComputeLinkInformation& cli,
  27. std::string const& fwSearchFlag);
  28. virtual std::string ComputeLinkLibraries(cmComputeLinkInformation& cli,
  29. std::string const& stdLibString);
  30. virtual std::string GetLinkerLanguage(cmGeneratorTarget* target,
  31. std::string const& config);
  32. protected:
  33. std::string ComputeLinkLibs(cmComputeLinkInformation& cli);
  34. std::string ComputeRPath(cmComputeLinkInformation& cli);
  35. std::string ConvertToOutputFormat(std::string const& input);
  36. std::string ConvertToOutputForExisting(std::string const& input);
  37. cmStateDirectory StateDir;
  38. cmOutputConverter* OutputConverter;
  39. bool ForResponse;
  40. bool UseWatcomQuote;
  41. bool Relink;
  42. };
  43. #endif