cmITKWrapTclCommand.h 2.38 KB
Newer Older
1 2
/*=========================================================================

3
  Program:   CMake - Cross-Platform Makefile Generator
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.
11 12 13 14 15 16 17 18 19 20 21

     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.

=========================================================================*/
#ifndef cmITKWrapTclCommand_h
#define cmITKWrapTclCommand_h

#include "cmStandardIncludes.h"
#include "cmCommand.h"
22
class cmDependInformation;
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
class cmMakeDepend;

/** \class cmITKWrapTclCommand
 * \brief Run CABLE to generate Tcl wrappers.
 *
 * cmITKWrapTclCommand runs CABLE on the specified configuration files
 * and combines them into a package on a given target.
 */
class cmITKWrapTclCommand : public cmCommand
{
public:
  cmITKWrapTclCommand();
  ~cmITKWrapTclCommand();
  
  /** This is a virtual constructor for the command.  */
  virtual cmCommand* Clone() { return new cmITKWrapTclCommand; }

  /** This is called when the command is first encountered in
   * the CMakeLists.txt file.  */
  virtual bool InitialPass(std::vector<std::string> const& args);

  /** The name of the command as specified in CMakeList.txt. */
  virtual const char* GetName() {return "ITK_WRAP_TCL";}
  
  /** Succinct documentation.  */
  virtual const char* GetTerseDocumentation() 
    { return "Run CABLE to generate Tcl wrappers."; }
  
  /** More documentation. */
  virtual const char* GetFullDocumentation()
    {
    return
      "ITK_WRAP_TCL(target-name config-file1 [config-file2 ...])\n"
      "Run CABLE on all the configuration files to generate Tcl wrappers.\n"
      "The generated sources are added to a target of the given name.";
    }
  
  cmTypeMacro(cmITKWrapTclCommand, cmCommand);
61 62 63 64
protected:  
  void AddDependencies(cmDependInformation const*info,
                       std::vector<std::string>& depends,
                       std::set<cmDependInformation const*>& visited);
65
  cmStdString m_TargetName;
66
  cmTarget* m_Target;
67 68 69 70 71 72 73 74
  
  bool CreateCableRule(const char* configFile);
  std::string GetCableFromCache() const;
  
  cmMakeDepend* m_MakeDepend;
};

#endif