cmInstallCommandArguments.h 2.08 KB
Newer Older
1 2
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */
3 4 5
#ifndef cmInstallCommandArguments_h
#define cmInstallCommandArguments_h

6
#include "cmConfigure.h" // IWYU pragma: keep
7

8 9
#include <string>
#include <vector>
Brad King's avatar
Brad King committed
10

11
#include "cmArgumentParser.h"
12

13
class cmInstallCommandArguments : public cmArgumentParser<void>
14
{
15
public:
wahikihiki's avatar
wahikihiki committed
16
  cmInstallCommandArguments(std::string defaultComponent);
17 18 19 20 21 22 23 24 25 26
  void SetGenericArguments(cmInstallCommandArguments* args)
  {
    this->GenericArguments = args;
  }

  // Compute destination path.and check permissions
  bool Finalize();

  const std::string& GetDestination() const;
  const std::string& GetComponent() const;
27
  const std::string& GetNamelinkComponent() const;
28 29 30 31 32 33 34
  bool GetExcludeFromAll() const;
  const std::string& GetRename() const;
  const std::string& GetPermissions() const;
  const std::vector<std::string>& GetConfigurations() const;
  bool GetOptional() const;
  bool GetNamelinkOnly() const;
  bool GetNamelinkSkip() const;
35
  bool HasNamelinkComponent() const;
36
  const std::string& GetType() const;
37 38 39 40

  static bool CheckPermissions(const std::string& onePerm, std::string& perm);

private:
41 42 43 44 45 46 47 48 49 50 51
  std::string Destination;
  std::string Component;
  std::string NamelinkComponent;
  bool ExcludeFromAll = false;
  std::string Rename;
  std::vector<std::string> Permissions;
  std::vector<std::string> Configurations;
  bool Optional = false;
  bool NamelinkOnly = false;
  bool NamelinkSkip = false;
  std::string Type;
52 53 54 55

  std::string DestinationString;
  std::string PermissionsString;

56
  cmInstallCommandArguments* GenericArguments = nullptr;
57 58 59 60
  static const char* PermissionsTable[];
  static const std::string EmptyString;
  std::string DefaultComponentName;
  bool CheckPermissions();
61 62
};

63 64
class cmInstallCommandIncludesArgument
{
65 66 67 68
public:
  cmInstallCommandIncludesArgument();
  void Parse(const std::vector<std::string>* args,
             std::vector<std::string>* unconsumedArgs);
69

70
  const std::vector<std::string>& GetIncludeDirs() const;
71

72 73
private:
  std::vector<std::string> IncludeDirs;
74 75
};

76
#endif