proj_builder_app.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: proj_builder_app.hpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/16 17:05:14  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.16
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef PROJECT_TREE_BULDER__PROJ_BUILDER_APP__HPP
  10. #define PROJECT_TREE_BULDER__PROJ_BUILDER_APP__HPP
  11. /* $Id: proj_builder_app.hpp,v 1000.2 2004/06/16 17:05:14 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Author:  Viatcheslav Gorelenkov
  37.  *
  38.  */
  39. #include <corelib/ncbiapp.hpp>
  40. #include <corelib/ncbienv.hpp>
  41. #include <corelib/ncbiargs.hpp>
  42. #include <corelib/ncbifile.hpp>
  43. #include <app/project_tree_builder/proj_utils.hpp>
  44. #include <app/project_tree_builder/file_contents.hpp>
  45. #include <app/project_tree_builder/resolver.hpp>
  46. #include <app/project_tree_builder/msvc_prj_utils.hpp>
  47. #include <app/project_tree_builder/msvc_site.hpp>
  48. #include <app/project_tree_builder/msvc_makefile.hpp>
  49. #include <app/project_tree_builder/msvc_dlls_info.hpp>
  50. BEGIN_NCBI_SCOPE
  51. /////////////////////////////////////////////////////////////////////////////
  52. ///
  53. /// CProjBulderApp --
  54. ///
  55. /// Abstraction of proj_tree_builder application.
  56. ///
  57. /// Singleton implementation.
  58. class CProjBulderApp : public CNcbiApplication
  59. {
  60. public:
  61.     
  62.     /// ShortCut for enums
  63.     int EnumOpt(const string& enum_name, const string& enum_val) const;
  64.     /// Singleton
  65.     friend CProjBulderApp& GetApp(void);
  66. private:
  67.     CProjBulderApp(void);
  68.     virtual void Init(void);
  69.     virtual int  Run (void);
  70.     virtual void Exit(void);
  71.     /// Parse program arguments.
  72.     void ParseArguments(void);
  73.     /// Solution to build.
  74.     string m_Solution;
  75.     //TFiles m_FilesMakeIn;
  76.     //TFiles m_FilesMakeLib;
  77.     //TFiles m_FilesMakeApp;
  78.     typedef map<string, CSimpleMakeFileContents> TFiles;
  79.     void DumpFiles(const TFiles& files, const string& filename) const;
  80.     
  81.     auto_ptr<CMsvc7RegSettings> m_MsvcRegSettings;
  82.     auto_ptr<CMsvcSite>         m_MsvcSite;
  83.     auto_ptr<CMsvcMetaMakefile> m_MsvcMetaMakefile;
  84.     auto_ptr<SProjectTreeInfo>  m_ProjectTreeInfo;
  85.     auto_ptr<CBuildType>        m_BuildType;
  86.     auto_ptr<CMsvcDllsInfo>     m_DllsInfo;
  87.     auto_ptr<CProjectItemsTree> m_WholeTree;
  88.     auto_ptr<CDllSrcFilesDistr> m_DllSrcFilesDistr;
  89. public:
  90.     void GetMetaDataFiles(list<string>* files) const;
  91.     const CMsvc7RegSettings& GetRegSettings    (void);
  92.     
  93.     const CMsvcSite&         GetSite           (void);
  94.     const CMsvcMetaMakefile& GetMetaMakefile   (void);
  95.     const SProjectTreeInfo&  GetProjectTreeInfo(void);
  96.     const CBuildType&        GetBuildType      (void);
  97.     const CMsvcDllsInfo&     GetDllsInfo       (void);
  98.     const CProjectItemsTree& GetWholeTree      (void);
  99.     CDllSrcFilesDistr&       GetDllFilesDistr  (void);
  100.     string GetDatatoolId          (void) const;
  101.     string GetDatatoolPathForApp  (void) const;
  102.     string GetDatatoolPathForLib  (void) const;
  103.     string GetDatatoolCommandLine (void) const;
  104.     
  105. private:
  106.     void    GetBuildConfigs     (list<SConfigInfo>* configs) const;
  107. };
  108. /// access to App singleton
  109. CProjBulderApp& GetApp(void);
  110. /////////////////////////////////////////////////////////////////////////////
  111. ///
  112. /// CProjBulderAppException --
  113. ///
  114. /// Exception class.
  115. ///
  116. /// proj_tree_builder specific exceptions.
  117. class CProjBulderAppException : public CException
  118. {
  119. public:
  120.     enum EErrCode {
  121.         eFileCreation,
  122.         eEnumValue,
  123.         eFileOpen,
  124.         eProjectType,
  125.         eBuildConfiguration,
  126.         eMetaMakefile,
  127.         eConfigureDefinesPath
  128.     };
  129.     virtual const char* GetErrCodeString(void) const {
  130.         switch ( GetErrCode() ) {
  131.         case eFileCreation:
  132.             return "Can not create file";
  133.         case eEnumValue:
  134.             return "Bad or missing enum value";
  135.         case eFileOpen:
  136.             return "Can not open file";
  137.         case eProjectType:
  138.             return "Unknown project type";
  139.         case eBuildConfiguration:
  140.             return "Unknown build configuration";
  141.         case eMetaMakefile:
  142.             return "Bad or missed metamakefile";
  143.         case eConfigureDefinesPath:
  144.             return "Path to configure defines file is empty";
  145.         default:
  146.             return CException::GetErrCodeString();
  147.         }
  148.     }
  149.     NCBI_EXCEPTION_DEFAULT(CProjBulderAppException, CException);
  150. };
  151. END_NCBI_SCOPE
  152. /*
  153.  * ===========================================================================
  154.  * $Log: proj_builder_app.hpp,v $
  155.  * Revision 1000.2  2004/06/16 17:05:14  gouriano
  156.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.16
  157.  *
  158.  * Revision 1.16  2004/06/10 15:12:55  gorelenk
  159.  * Added newline at the file end to avoid GCC warning.
  160.  *
  161.  * Revision 1.15  2004/05/19 14:23:07  gorelenk
  162.  * Added definition of GetDllFilesDistr to class CProjBulderApp.
  163.  *
  164.  * Revision 1.14  2004/05/17 16:21:00  gorelenk
  165.  * Added CDllSrcFilesDistr to class CProjBulderApp - binded CDllSrcFilesDistr
  166.  * singleton to app singleton.
  167.  *
  168.  * Revision 1.13  2004/03/23 14:33:59  gorelenk
  169.  * Added member m_WholeTree and member-function GetWholeTree to declaration
  170.  * of class CProjBulderApp.
  171.  *
  172.  * Revision 1.12  2004/03/18 17:41:03  gorelenk
  173.  * Aligned classes member-functions parameters inside declarations.
  174.  *
  175.  * Revision 1.11  2004/03/08 23:32:11  gorelenk
  176.  * Added member m_DllsInfo and declaration of member-function GetDllsInfo
  177.  * to class CProjBulderApp.
  178.  *
  179.  * Revision 1.10  2004/03/02 23:29:56  gorelenk
  180.  * Added data-member of type auto_ptr<CBuildType> and member-function
  181.  * GetBuildType.
  182.  *
  183.  * Revision 1.9  2004/02/05 16:24:57  gorelenk
  184.  * + eConfigureDefinesPath in CProjBulderAppException class.
  185.  *
  186.  * Revision 1.8  2004/01/30 20:41:34  gorelenk
  187.  * Added support of ASN projects
  188.  *
  189.  * Revision 1.7  2004/01/28 17:55:06  gorelenk
  190.  * += For msvc makefile support of :
  191.  *                 Requires tag, ExcludeProject tag,
  192.  *                 AddToProject section (SourceFiles and IncludeDirs),
  193.  *                 CustomBuild section.
  194.  * += For support of user local site.
  195.  *
  196.  * Revision 1.6  2004/01/26 19:25:42  gorelenk
  197.  * += MSVC meta makefile support
  198.  * += MSVC project makefile support
  199.  *
  200.  * Revision 1.5  2004/01/22 17:57:09  gorelenk
  201.  * first version
  202.  *
  203.  * ===========================================================================
  204.  */
  205. #endif //PROJECT_TREE_BULDER__PROJ_BUILDER_APP__HPP