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

Go to the SVN repository for this file.

1 #ifndef PROJECT_TREE_BUILDER__PROJ_ITEM__HPP
2 #define PROJECT_TREE_BUILDER__PROJ_ITEM__HPP
3 
4 /* $Id: proj_item.hpp 99237 2023-03-01 16:35:07Z ucko $
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 
34 #include "msvc_prj_utils.hpp"
36 #include "file_contents.hpp"
37 
38 #include <corelib/ncbienv.hpp>
39 #include <set>
40 
41 
43 
44 
45 /////////////////////////////////////////////////////////////////////////////
46 ///
47 /// CProjItem --
48 ///
49 /// Project abstraction.
50 ///
51 /// Representation of one project from the build tree.
52 
53 class CProjItem
54 {
55 public:
57 
58 
59  CProjItem(void);
60  CProjItem(const CProjItem& item);
61  CProjItem& operator= (const CProjItem& item);
62 
64  const string& name,
65  const string& id,
66  const string& sources_base,
67  const list<string>& sources,
68  const list<CProjKey>& depends,
69  const list<string>& reqs,
70  const list<string>& libs_3_party,
71  const list<string>& include_dirs,
72  const list<string>& defines,
73  EMakeFileType maketype,
74  const string& guid);
75 
76  ~CProjItem(void);
77 
78  string GetPath(void) const;
79 
80  bool HasDataspecDependency(void) const;
81 
82  /// Name of atomic project.
83  string m_Name;
84 
85  /// ID of atomic project.
86  string m_ID;
87 
88  /// Type of the project.
90 
91  /// Base directory of source files (....c++/src/a/ )
93 
94  /// Precompiled header
95  string m_Pch;
96 
97  /// List of source files without extension ( *.cpp or *.c ) -
98  /// with relative pathes from m_SourcesBaseDir.
99  list<string> m_Sources;
100 
101  /// What projects this project is depend upon (IDs).
102  list<CProjKey> m_Depends;
104 
105  /// What this project requires to have (in user site).
106  list<string> m_Requires;
107 
108  /// Resolved contents of LIBS flag (Third-party libs)
109  list<string> m_Libs3Party;
110 
111  /// Resolved contents of CPPFLAG ( -I$(include)<m_IncludeDir> -I$(srcdir)/..)
112  /// Absolute pathes
113  list<string> m_IncludeDirs;
114 
115  /// Source files *.asn , *.dtd to be processed by datatool app
116  list<CDataToolGeneratedSrc> m_DatatoolSources;
117 
118  /// Defines like USE_MS_DBLIB
119  list<string> m_Defines;
120 
121  /// Libraries from NCBI C Toolkit to link with
122  list<string> m_NcbiCLibs;
123 
124  /// Type of the project
126 
127  /// project GUID
128  mutable string m_GUID;
129 
130  string m_DllHost;
131  list<string> m_HostedLibs;
132 
134  list<string> m_ExportHeaders;
135 
136  string m_Watchers;
137  list<string> m_CheckInfo;
139 
140  list<string> m_Includes;
141  list<string> m_Inlines;
143  list<string> m_ProjTags;
144  list<SCustomBuildInfo> m_CustomBuild;
145 
146  mutable bool m_IsBundle;
150  string m_MkName;
151 
153 private:
154  void Clear(void);
155  void SetFrom(const CProjItem& item);
156 };
157 
158 
160 
161 #endif //PROJECT_TREE_BUILDER__PROJ_ITEM__HPP
CProjItem –.
Definition: proj_item.hpp:54
list< string > m_Requires
What this project requires to have (in user site).
Definition: proj_item.hpp:106
list< string > m_IncludeDirs
Resolved contents of CPPFLAG ( -I<m_IncludeDir> -I/..) Absolute pathes.
Definition: proj_item.hpp:113
list< string > m_Sources
List of source files without extension ( *.cpp or *.c ) - with relative pathes from m_SourcesBaseDir.
Definition: proj_item.hpp:99
bool m_StyleObjcpp
Definition: proj_item.hpp:149
bool m_IsMetallib
Definition: proj_item.hpp:147
~CProjItem(void)
Definition: proj_item.cpp:177
CSimpleMakeFileContents m_DataSource
Definition: proj_item.hpp:152
CProjItem & operator=(const CProjItem &item)
Definition: proj_item.cpp:135
set< CProjKey > m_UnconditionalDepends
Definition: proj_item.hpp:103
list< string > m_ExportHeaders
Definition: proj_item.hpp:134
list< CProjKey > m_Depends
What projects this project is depend upon (IDs).
Definition: proj_item.hpp:102
list< CDataToolGeneratedSrc > m_DatatoolSources
Source files *.asn , *.dtd to be processed by datatool app.
Definition: proj_item.hpp:116
bool m_External
Definition: proj_item.hpp:148
TProjType m_ProjType
Type of the project.
Definition: proj_item.hpp:89
bool m_IsBundle
Definition: proj_item.hpp:146
EMakeFileType m_MakeType
Type of the project.
Definition: proj_item.hpp:125
string m_ID
ID of atomic project.
Definition: proj_item.hpp:86
list< string > m_Defines
Defines like USE_MS_DBLIB.
Definition: proj_item.hpp:119
string GetPath(void) const
Definition: proj_item.cpp:237
list< string > m_HostedLibs
Definition: proj_item.hpp:131
string m_ExportHeadersDest
Definition: proj_item.hpp:133
string m_MkName
Definition: proj_item.hpp:150
list< string > m_Inlines
Definition: proj_item.hpp:141
string m_GUID
project GUID
Definition: proj_item.hpp:128
string m_DllHost
Definition: proj_item.hpp:130
string m_Pch
Precompiled header.
Definition: proj_item.hpp:95
CProjKey::TProjType TProjType
Definition: proj_item.hpp:56
string m_Watchers
Definition: proj_item.hpp:136
bool HasDataspecDependency(void) const
Definition: proj_item.cpp:265
list< string > m_Includes
Definition: proj_item.hpp:140
set< string > m_CheckConfigs
Definition: proj_item.hpp:138
list< string > m_NcbiCLibs
Libraries from NCBI C Toolkit to link with.
Definition: proj_item.hpp:122
void Clear(void)
Definition: proj_item.cpp:183
list< string > m_ProjTags
Definition: proj_item.hpp:143
string m_Name
Name of atomic project.
Definition: proj_item.hpp:83
void SetFrom(const CProjItem &item)
Definition: proj_item.cpp:196
list< string > m_Libs3Party
Resolved contents of LIBS flag (Third-party libs)
Definition: proj_item.hpp:109
string m_SourcesBaseDir
Base directory of source files (....c++/src/a/ )
Definition: proj_item.hpp:92
list< SCustomBuildInfo > m_CustomBuild
Definition: proj_item.hpp:144
list< string > m_CheckInfo
Definition: proj_item.hpp:137
CProjItem(void)
Definition: proj_item.cpp:123
map< string, list< string > > m_ExtraFiles
Definition: proj_item.hpp:142
CSimpleMakeFileContents –.
Definition: map.hpp:338
EMakeFileType
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
Defines unified interface to application:
Definition: type.c:6
Modified on Fri Sep 20 14:58:26 2024 by modify_doxy.py rev. 669887