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 4 5 #include "cmConfigure.h" // IWYU pragma: keep 6 7 #include <string> 8 #include <vector> 9 10 #include "cmArgumentParser.h" 11 12 class cmInstallCommandArguments : public cmArgumentParser<void> 13 { 14 public: 15 cmInstallCommandArguments(std::string defaultComponent); SetGenericArguments(cmInstallCommandArguments * args)16 void SetGenericArguments(cmInstallCommandArguments* args) 17 { 18 this->GenericArguments = args; 19 } 20 21 // Compute destination path.and check permissions 22 bool Finalize(); 23 24 const std::string& GetDestination() const; 25 const std::string& GetComponent() const; 26 const std::string& GetNamelinkComponent() const; 27 bool GetExcludeFromAll() const; 28 const std::string& GetRename() const; 29 const std::string& GetPermissions() const; 30 const std::vector<std::string>& GetConfigurations() const; 31 bool GetOptional() const; 32 bool GetNamelinkOnly() const; 33 bool GetNamelinkSkip() const; 34 bool HasNamelinkComponent() const; 35 const std::string& GetType() const; 36 37 static bool CheckPermissions(const std::string& onePerm, std::string& perm); 38 39 private: 40 std::string Destination; 41 std::string Component; 42 std::string NamelinkComponent; 43 bool ExcludeFromAll = false; 44 std::string Rename; 45 std::vector<std::string> Permissions; 46 std::vector<std::string> Configurations; 47 bool Optional = false; 48 bool NamelinkOnly = false; 49 bool NamelinkSkip = false; 50 std::string Type; 51 52 std::string DestinationString; 53 std::string PermissionsString; 54 55 cmInstallCommandArguments* GenericArguments = nullptr; 56 static const char* PermissionsTable[]; 57 static const std::string EmptyString; 58 std::string DefaultComponentName; 59 bool CheckPermissions(); 60 }; 61 62 class cmInstallCommandIncludesArgument 63 { 64 public: 65 cmInstallCommandIncludesArgument(); 66 void Parse(const std::vector<std::string>* args, 67 std::vector<std::string>* unconsumedArgs); 68 69 const std::vector<std::string>& GetIncludeDirs() const; 70 71 private: 72 std::vector<std::string> IncludeDirs; 73 }; 74