NCBI C++ ToolKit
msvc_masterproject_generator.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 #ifndef PROJECT_TREE_BULDER__MSVC_MASTERPROJECT_GENERATOR_HPP
2 #define PROJECT_TREE_BULDER__MSVC_MASTERPROJECT_GENERATOR_HPP
3 
4 /* $Id: msvc_masterproject_generator.hpp 37307 2008-03-25 16:45:09Z gouriano $
5  * ===========================================================================
6  *
7  * PUBLIC DOMAIN NOTICE
8  * National Center for Biotechnology Information
9  *
10  * This software/database is a "United States Government Work" under the
11  * terms of the United States Copyright Act. It was written as part of
12  * the author's official duties as a United States Government employee and
13  * thus cannot be copyrighted. This software/database is freely available
14  * to the public for use. The National Library of Medicine and the U.S.
15  * Government have not placed any restriction on its use or reproduction.
16  *
17  * Although all reasonable efforts have been taken to ensure the accuracy
18  * and reliability of the software and data, the NLM and the U.S.
19  * Government do not and cannot warrant the performance or results that
20  * may be obtained by using this software or data. The NLM and the U.S.
21  * Government disclaim all warranties, express or implied, including
22  * warranties of performance, merchantability or fitness for any particular
23  * purpose.
24  *
25  * Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Author: Viatcheslav Gorelenkov
30  *
31  */
32 
33 #include "proj_item.hpp"
34 #include "proj_tree.hpp"
35 #include "msvc_prj_utils.hpp"
36 
37 #include <corelib/ncbienv.hpp>
39 
40 #if NCBI_COMPILER_MSVC
42 
43 /////////////////////////////////////////////////////////////////////////////
44 ///
45 /// CMsvcMasterProjectGenerator --
46 ///
47 /// Generator of _MasterProject for MSVC 7.10 solution.
48 ///
49 /// Generates utility project from the project tree. Projects hierarchy in the
50 /// project tree will be represented as folders hierarchy in _MasterProject.
51 /// Every project will be represented as a file <projectname>.bulid with
52 /// attached custom build command that allows to build this project.
53 
54 class CMsvcMasterProjectGenerator
55 {
56 public:
57  CMsvcMasterProjectGenerator(const CProjectItemsTree& tree,
58  const list<SConfigInfo>& configs,
59  const string& project_dir);
60 
61  ~CMsvcMasterProjectGenerator(void);
62 
63  void SaveProject();
64 
65  string GetPath() const;
66  const CVisualStudioProject& GetVisualStudioProject(void) const
67  {
68  return m_Xmlprj;
69  }
70 
71 private:
72  CVisualStudioProject m_Xmlprj;
73  const CProjectItemsTree& m_Tree;
74  list<SConfigInfo> m_Configs;
75 
76 
77  const string m_Name;
78 
79  const string m_ProjectDir;
80 
81  const string m_ProjectItemExt;
82 
83  string m_CustomBuildCommand;
84 
85  const string m_FilesSubdir;
86 
87 
88 
89  void AddProjectToFilter(CRef<CFilter>& filter, const CProjKey& project_id);
90 
91  void CreateProjectFileItem(const CProjKey& project_id);
92 
93  void ProcessTreeFolder(const SProjectTreeFolder& folder,
94  CSerialObject* parent);
95 
96  /// Prohibited to:
97  CMsvcMasterProjectGenerator(void);
98  CMsvcMasterProjectGenerator(const CMsvcMasterProjectGenerator&);
99  CMsvcMasterProjectGenerator& operator=
100  (const CMsvcMasterProjectGenerator&);
101 
102 };
103 #endif //NCBI_COMPILER_MSVC
104 
106 
107 #endif //PROJECT_TREE_BULDER__MSVC_MASTERPROJECT_GENERATOR_HPP
CProjKey –.
CProjectItemsTree –.
Definition: proj_tree.hpp:54
CRef –.
Definition: ncbiobj.hpp:618
Base class for all serializable objects.
Definition: serialbase.hpp:150
CVisualStudioProject –.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define USING_SCOPE(ns)
Use the specified namespace.
Definition: ncbistl.hpp:78
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
Defines unified interface to application:
SProjectTreeFolder –.
Definition: proj_tree.hpp:159
Modified on Sat May 25 14:17:20 2024 by modify_doxy.py rev. 669887