cmVariableRequiresCommand.h 2.47 KB
Newer Older
Bill Hoffman's avatar
Bill Hoffman committed
1 2
/*=========================================================================

3
  Program:   CMake - Cross-Platform Makefile Generator
Bill Hoffman's avatar
Bill Hoffman committed
4 5 6 7 8
  Module:    $RCSfile$
  Language:  C++
  Date:      $Date$
  Version:   $Revision$

9 10
  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
  See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
Bill Hoffman's avatar
Bill Hoffman committed
11

Will Schroeder's avatar
Will Schroeder committed
12 13 14
     This software is distributed WITHOUT ANY WARRANTY; without even 
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
     PURPOSE.  See the above copyright notices for more information.
Bill Hoffman's avatar
Bill Hoffman committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

=========================================================================*/
#ifndef cmVariableRequiresCommand_h
#define cmVariableRequiresCommand_h

#include "cmStandardIncludes.h"
#include "cmCommand.h"

/** \class cmVariableRequiresCommand
 * \brief Displays a message to the user
 *
 */
class cmVariableRequiresCommand : public cmCommand
{
public:
  /**
   * This is a virtual constructor for the command.
   */
  virtual cmCommand* Clone() 
    {
    return new cmVariableRequiresCommand;
    }

  /**
   * This is called when the command is first encountered in
   * the CMakeLists.txt file.
   */
  virtual bool InitialPass(std::vector<std::string> const& args);
43 44 45
  
  ///! 
  virtual void FinalPass();
Bill Hoffman's avatar
Bill Hoffman committed
46 47 48
  /**
   * The name of the command as specified in CMakeList.txt.
   */
49
  virtual const char* GetName() { return "VARIABLE_REQUIRES";}
Bill Hoffman's avatar
Bill Hoffman committed
50 51 52 53 54 55

  /**
   * Succinct documentation.
   */
  virtual const char* GetTerseDocumentation() 
    {
56
    return "Assert satisfaction of an option's required variables.";
Bill Hoffman's avatar
Bill Hoffman committed
57 58 59 60 61 62 63 64
    }
  
  /**
   * More documentation.
   */
  virtual const char* GetFullDocumentation()
    {
    return
65 66 67
      "  VARIABLE_REQUIRES(TEST_VARIABLE RESULT_VARIABLE\n"
      "                    REQUIRED_VARIABLE1\n"
      "                    REQUIRED_VARIABLE2 ...)\n"
Bill Hoffman's avatar
Bill Hoffman committed
68 69
      "The first argument (TEST_VARIABLE) is the name of the variable to be "
      "tested, if that variable is false nothing else is done. If "
Bill Hoffman's avatar
Bill Hoffman committed
70
      "TEST_VARIABLE is true, then "
71
      "the next arguemnt (RESULT_VARIABLE) is a vairable that is set to true "
72
      "if all the required variables are set." 
Bill Hoffman's avatar
Bill Hoffman committed
73
      "The rest of the arguments are variables that must be true or not "
74 75
      "set to NOTFOUND to avoid an error.  If any are not true, an error "
      "is reported.";
Bill Hoffman's avatar
Bill Hoffman committed
76 77 78
    }
  
  cmTypeMacro(cmVariableRequiresCommand, cmCommand);
79 80 81 82
private:
  std::string m_ErrorMessage;
  std::vector<std::string> m_Arguments;
  bool m_RequirementsMet;
Bill Hoffman's avatar
Bill Hoffman committed
83 84 85 86
};


#endif