CMake Nightly Date Stamp
[kiteware-cmake.git] / Source / cmInstallCommandArguments.h
blob6e46aaca5724fd60b971dcbb10daf1784261a2f7
1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
3 #pragma once
5 #include "cmConfigure.h" // IWYU pragma: keep
7 #include <string>
8 #include <vector>
10 #include "cmArgumentParser.h"
11 #include "cmArgumentParserTypes.h"
13 class cmInstallCommandArguments : public cmArgumentParser<void>
15 public:
16 cmInstallCommandArguments(std::string defaultComponent);
17 void SetGenericArguments(cmInstallCommandArguments* args)
19 this->GenericArguments = args;
22 // Compute destination path.and check permissions
23 bool Finalize();
25 const std::string& GetDestination() const;
26 const std::string& GetComponent() const;
27 const std::string& GetNamelinkComponent() const;
28 bool GetExcludeFromAll() const;
29 const std::string& GetRename() const;
30 const std::string& GetPermissions() const;
31 const std::vector<std::string>& GetConfigurations() const;
32 bool GetOptional() const;
33 bool GetNamelinkOnly() const;
34 bool GetNamelinkSkip() const;
35 bool HasNamelinkComponent() const;
36 const std::string& GetType() const;
38 const std::string& GetDefaultComponent() const;
40 static bool CheckPermissions(const std::string& onePerm, std::string& perm);
42 private:
43 std::string Destination;
44 std::string Component;
45 std::string NamelinkComponent;
46 bool ExcludeFromAll = false;
47 std::string Rename;
48 ArgumentParser::MaybeEmpty<std::vector<std::string>> Permissions;
49 ArgumentParser::MaybeEmpty<std::vector<std::string>> Configurations;
50 bool Optional = false;
51 bool NamelinkOnly = false;
52 bool NamelinkSkip = false;
53 std::string Type;
55 std::string DestinationString;
56 std::string PermissionsString;
58 cmInstallCommandArguments* GenericArguments = nullptr;
59 static const char* PermissionsTable[];
60 static const std::string EmptyString;
61 std::string DefaultComponentName;
62 bool CheckPermissions();
65 class cmInstallCommandIncludesArgument
67 public:
68 cmInstallCommandIncludesArgument();
69 void Parse(const std::vector<std::string>* args,
70 std::vector<std::string>* unconsumedArgs);
72 const std::vector<std::string>& GetIncludeDirs() const;
74 private:
75 std::vector<std::string> IncludeDirs;
78 class cmInstallCommandFileSetArguments : public cmInstallCommandArguments
80 public:
81 cmInstallCommandFileSetArguments(std::string defaultComponent);
83 void Parse(std::vector<std::string> args,
84 std::vector<std::string>* unconsumedArgs);
86 const std::string& GetFileSet() const { return this->FileSet; }
88 private:
89 std::string FileSet;