1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
5 #include "cmConfigure.h" // IWYU pragma: keep
10 #include "cmArgumentParser.h"
11 #include "cmArgumentParserTypes.h"
13 class cmInstallCommandArguments
: public cmArgumentParser
<void>
16 cmInstallCommandArguments(std::string defaultComponent
);
17 void SetGenericArguments(cmInstallCommandArguments
* args
)
19 this->GenericArguments
= args
;
22 // Compute destination path.and check permissions
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
);
43 std::string Destination
;
44 std::string Component
;
45 std::string NamelinkComponent
;
46 bool ExcludeFromAll
= false;
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;
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
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;
75 std::vector
<std::string
> IncludeDirs
;
78 class cmInstallCommandFileSetArguments
: public cmInstallCommandArguments
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
; }