proj_tree_builder.hpp
来自「ncbi源码」· HPP 代码 · 共 359 行
HPP
359 行
/* * =========================================================================== * PRODUCTION $Log: proj_tree_builder.hpp,v $ * PRODUCTION Revision 1000.3 2004/06/16 17:05:26 gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6 * PRODUCTION * =========================================================================== */#ifndef PROJECT_TREE_BUILDER__PROJ_TREE_BUILDER__HPP#define PROJECT_TREE_BUILDER__PROJ_TREE_BUILDER__HPP/* $Id: proj_tree_builder.hpp,v 1000.3 2004/06/16 17:05:26 gouriano Exp $ * =========================================================================== * * PUBLIC DOMAIN NOTICE * National Center for Biotechnology Information * * This software/database is a "United States Government Work" under the * terms of the United States Copyright Act. It was written as part of * the author's official duties as a United States Government employee and * thus cannot be copyrighted. This software/database is freely available * to the public for use. The National Library of Medicine and the U.S. * Government have not placed any restriction on its use or reproduction. * * Although all reasonable efforts have been taken to ensure the accuracy * and reliability of the software and data, the NLM and the U.S. * Government do not and cannot warrant the performance or results that * may be obtained by using this software or data. The NLM and the U.S. * Government disclaim all warranties, express or implied, including * warranties of performance, merchantability or fitness for any particular * purpose. * * Please cite the author in any work or product based on this material. * * =========================================================================== * * Author: Viatcheslav Gorelenkov * */#include <app/project_tree_builder/proj_item.hpp>#include <app/project_tree_builder/proj_tree.hpp>#include <set>#include <app/project_tree_builder/resolver.hpp>#include <corelib/ncbienv.hpp>BEGIN_NCBI_SCOPE// Traits classes - creation helpers for CProjectTreeBuilder://///////////////////////////////////////////////////////////////////////////////// SMakeProjectT --////// Base traits and policies.////// Common traits and policies for all project types.struct SMakeProjectT{ typedef CProjectItemsTree::TFiles TFiles; static CProjItem::TProjType GetProjType(const string& base_dir, const string& projname); struct SMakeInInfo { typedef enum { eApp, eLib, eAsn, eMsvc } TMakeinType; SMakeInInfo(TMakeinType type, const list<string>& names) :m_Type (type), m_ProjNames(names) { } TMakeinType m_Type; list<string> m_ProjNames; }; typedef list<SMakeInInfo> TMakeInInfoList; static void AnalyzeMakeIn(const CSimpleMakeFileContents& makein_contents, TMakeInInfoList* info); static string CreateMakeAppLibFileName(const string& base_dir, const string& projname); static void CreateFullPathes (const string& dir, const list<string> files, list<string>* full_pathes); static string GetOneIncludeDir (const string& flag, const string& token); static void CreateIncludeDirs (const list<string>& cpp_flags, const string& source_base_dir, list<string>* include_dirs); static void CreateDefines (const list<string>& cpp_flags, list<string>* defines); static void Create3PartyLibs (const list<string>& libs_flags, list<string>* libs_list); static void DoResolveDefs (CSymResolver& resolver, CProjectItemsTree::TFiles& files, const set<string>& keys); static bool IsMakeInFile (const string& name); static bool IsMakeLibFile (const string& name); static bool IsMakeAppFile (const string& name); static bool IsUserProjFile (const string& name); static void ConvertLibDepends (const list<string>& depends_libs, list<CProjKey>* depends_ids); static bool IsConfigurableDefine (const string& define); static string StripConfigurableDefine (const string& define);};/////////////////////////////////////////////////////////////////////////////////// SAppProjectT --////// APP_PROJ traits and policies.////// Traits and policies specific for APP_PROJ.struct SAppProjectT : public SMakeProjectT{ static void CreateNcbiCToolkitLibs(const CSimpleMakeFileContents& makefile, list<string>* libs_list); static CProjKey DoCreate(const string& source_base_dir, const string& proj_name, const string& applib_mfilepath, const TFiles& makeapp, CProjectItemsTree* tree);};/////////////////////////////////////////////////////////////////////////////////// SLibProjectT --////// LIB_PROJ traits and policies.////// Traits and policies specific for LIB_PROJ.struct SLibProjectT : public SMakeProjectT{ static CProjKey DoCreate(const string& source_base_dir, const string& proj_name, const string& applib_mfilepath, const TFiles& makeapp, CProjectItemsTree* tree);};/////////////////////////////////////////////////////////////////////////////////// SAsnProjectT --////// Base traits and policies for project with datatool-generated source files.////// Common traits and policies for projects with datatool-generated sources.struct SAsnProjectT : public SMakeProjectT{ typedef CProjectItemsTree::TProjects TProjects; static CProjKey DoCreate(const string& source_base_dir, const string& proj_name, const string& applib_mfilepath, const TFiles& makeapp, const TFiles& makelib, CProjectItemsTree* tree); typedef enum { eNoAsn, eSingle, eMultiple, } TAsnType; static TAsnType GetAsnProjectType(const string& applib_mfilepath, const TFiles& makeapp, const TFiles& makelib);};/////////////////////////////////////////////////////////////////////////////////// SAsnProjectSingleT --////// Traits and policies for project one ASN/DTD file.////// Traits and policies specific for project with one ASN/DTD file.struct SAsnProjectSingleT : public SAsnProjectT{ static CProjKey DoCreate(const string& source_base_dir, const string& proj_name, const string& applib_mfilepath, const TFiles& makeapp, const TFiles& makelib, CProjectItemsTree* tree);};/////////////////////////////////////////////////////////////////////////////////// SAsnProjectMultipleT --////// Traits and policies for project multiple ASN/DTD files.////// Traits and policies specific for project with several ASN/DTD files.struct SAsnProjectMultipleT : public SAsnProjectT{ static CProjKey DoCreate(const string& source_base_dir, const string& proj_name, const string& applib_mfilepath, const TFiles& makeapp, const TFiles& makelib, CProjectItemsTree* tree);};/////////////////////////////////////////////////////////////////////////////////// SUserProjectT --////// Traits and policies for user project makefiles////// Traits and policies specific for user-generated projectsstruct SMsvcProjectT : public SMakeProjectT{ static CProjKey DoCreate(const string& source_base_dir, const string& proj_name, const string& applib_mfilepath, const TFiles& makemsvc, CProjectItemsTree* tree);};/////////////////////////////////////////////////////////////////////////////////// CProjectTreeBuilder --////// Builder class for project tree.////// Builds tree, resolvs macrodefines and adds dependents projects.class CProjectTreeBuilder{public: typedef map<string, CSimpleMakeFileContents> TFiles; // IN LIB APP// typedef STriple<TFiles, TFiles, TFiles> TMakeFiles; struct SMakeFiles { TFiles m_In; TFiles m_Lib; TFiles m_App; TFiles m_User; }; /// Build project tree and include all projects this tree depends upon static void BuildProjectTree(const IProjectFilter* filter, const string& root_src_path, CProjectItemsTree* tree );private: /// Build one project tree and do not resolve (include) depends static void BuildOneProjectTree(const IProjectFilter* filter, const string& root_src_path, CProjectItemsTree* tree ); static void ProcessDir (const string& dir_name, bool is_root, const IProjectFilter* filter, SMakeFiles* makefiles); static void ProcessMakeInFile (const string& file_name, SMakeFiles* makefiles); static void ProcessMakeLibFile (const string& file_name, SMakeFiles* makefiles); static void ProcessMakeAppFile (const string& file_name, SMakeFiles* makefiles); static void ProcessUserProjFile (const string& file_name, SMakeFiles* makefiles); static void ResolveDefs(CSymResolver& resolver, SMakeFiles& makefiles); static void AddDatatoolSourcesDepends(CProjectItemsTree* tree);};END_NCBI_SCOPE/* * =========================================================================== * $Log: proj_tree_builder.hpp,v $ * Revision 1000.3 2004/06/16 17:05:26 gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6 * * Revision 1.6 2004/06/10 15:12:55 gorelenk * Added newline at the file end to avoid GCC warning. * * Revision 1.5 2004/05/10 19:48:21 gorelenk * + SMsvcProjectT . * * Revision 1.4 2004/04/06 17:12:37 gorelenk * Added member-functions IsConfigurableDefine and StripConfigurableDefine * to struct SMakeProjectT . * * Revision 1.3 2004/03/18 17:41:03 gorelenk * Aligned classes member-functions parameters inside declarations. * * Revision 1.2 2004/03/16 23:54:49 gorelenk * Changed parameters list of member-function CreateNcbiCToolkitLibs * of struct SAppProjectT. * * Revision 1.1 2004/03/02 16:35:16 gorelenk * Initial revision. * * =========================================================================== */#endif //PROJECT_TREE_BUILDER__PROJ_TREE_BUILDER__HPP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?