msvc_project_context.hpp
来自「ncbi源码」· HPP 代码 · 共 586 行 · 第 1/2 页
HPP
586 行
/* * =========================================================================== * PRODUCTION $Log: msvc_project_context.hpp,v $ * PRODUCTION Revision 1000.1 2004/06/16 17:05:04 gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.17 * PRODUCTION * =========================================================================== */#ifndef PROJECT_TREE_BUILDER__PROJECT_CONTEXT__HPP#define PROJECT_TREE_BUILDER__PROJECT_CONTEXT__HPP/* $Id: msvc_project_context.hpp,v 1000.1 2004/06/16 17:05:04 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<list>#include<string>#include<map>#include <app/project_tree_builder/proj_item.hpp>#include <app/project_tree_builder/msvc_prj_utils.hpp>#include <app/project_tree_builder/msvc_makefile.hpp>#include <app/project_tree_builder/proj_builder_app.hpp>#include <corelib/ncbienv.hpp>BEGIN_NCBI_SCOPE/////////////////////////////////////////////////////////////////////////////////// CMsvcPrjProjectContext --////// Abstraction of MSVC project-specific context.////// Project context provides project-specific information for /// project generation.class CMsvcPrjProjectContext{public: //no value type semantics CMsvcPrjProjectContext(const CProjItem& project); //Compiler::General string AdditionalIncludeDirectories(const SConfigInfo& cfg_info) const; const string& ProjectName(void) const { return m_ProjectName; } const string& ProjectId(void) const { return m_ProjectId; } string AdditionalLinkerOptions(const SConfigInfo& cfg_info) const;#if 0 string AdditionalLibrarianOptions(const SConfigInfo& cfg_info) const;#endif string AdditionalLibraryDirectories(const SConfigInfo& cfg_info) const; const string& ProjectDir(void) const { return m_ProjectDir; } CProjItem::TProjType ProjectType(void) const { return m_ProjType; } const list<string>& SourcesDirsAbs(void) const { return m_SourcesDirsAbs; } const list<string>& IncludeDirsAbs(void) const { return m_IncludeDirsAbs; } const CMsvcCombinedProjectMakefile& GetMsvcProjectMakefile(void) const; static bool IsRequiresOk(const CProjItem& prj); bool IsConfigEnabled(const SConfigInfo& config) const; const list<SCustomBuildInfo>& GetCustomBuildInfo(void) const { return m_CustomBuildInfo; } const list<string> Defines(const SConfigInfo& cfg_info) const; const list<string>& PreBuilds(void) const { return m_PreBuilds; }private: // Prohibited to: CMsvcPrjProjectContext(void); CMsvcPrjProjectContext(const CMsvcPrjProjectContext&); CMsvcPrjProjectContext& operator= (const CMsvcPrjProjectContext&); string m_ProjectName; string m_ProjectId; string m_AdditionalLibrarianOptions; string m_ProjectDir; CProjItem::TProjType m_ProjType; list<string> m_SourcesDirsAbs; list<string> m_IncludeDirsAbs; list<string> m_ProjectIncludeDirs; list<string> m_ProjectLibs; void CreateLibsList(list<string>* libs_list) const; auto_ptr<CMsvcProjectMakefile> m_MsvcProjectMakefile; auto_ptr<CMsvcCombinedProjectMakefile> m_MsvcCombinedProjectMakefile; string m_SourcesBaseDir; list<string> m_Requires; list<SCustomBuildInfo> m_CustomBuildInfo; list<string> m_Defines; list<string> m_PreBuilds; list<string> m_NcbiCLibs;};/////////////////////////////////////////////////////////////////////////////////// CMsvcPrjGeneralContext --////// Abstraction of MSVC project "general" context.////// Project context provides specific information for particular type of /// project (Exe, Lib, Dll). This information not project-specific, but /// more project type specific.class CMsvcPrjGeneralContext{public: //no value type semantics CMsvcPrjGeneralContext(const SConfigInfo& config, const CMsvcPrjProjectContext& prj_context); typedef enum { eExe, eLib, eDll, eOther } TTargetType; TTargetType m_Type; SConfigInfo m_Config; //Configuration::General string OutputDirectory(void) const { return m_OutputDirectory; } string ConfigurationName(void) const { return m_Config.m_Name; } const CMsvcMetaMakefile& GetMsvcMetaMakefile(void) const { return m_MsvcMetaMakefile; }private: /// Prohibited to: CMsvcPrjGeneralContext(void); CMsvcPrjGeneralContext(const CMsvcPrjGeneralContext&); CMsvcPrjGeneralContext& operator= (const CMsvcPrjGeneralContext&); string m_OutputDirectory; string m_ConfigurationName; const CMsvcMetaMakefile& m_MsvcMetaMakefile;};/////////////////////////////////////////////////////////////////////////////////// ITool --////// Base class for all MSVC tools.////// Polymorphic hierarchy base class.struct ITool{ virtual string Name(void) const = 0; virtual ~ITool(void) { }};/////////////////////////////////////////////////////////////////////////////////// IConfiguration --////// "Configuration" interface.////// Abstract class.struct IConfiguration : public ITool{ //Name : Configuration+'|'+"Win32" virtual string OutputDirectory(void) const = 0; virtual string IntermediateDirectory(void) const = 0; virtual string ConfigurationType(void) const = 0; virtual string CharacterSet(void) const = 0;};/////////////////////////////////////////////////////////////////////////////////// ICompilerTool --////// "CompilerTool" interface.////// Abstract class.struct ICompilerTool : public ITool{ //string Name : "VCCLCompilerTool" virtual string Optimization(void) const = 0; virtual string AdditionalIncludeDirectories(void) const = 0; // Preprocessor definition: // LIB (Debug) WIN32;_DEBUG;_LIB // LIB (Release) WIN32;NDEBUG;_LIB // APP (Debug) WIN32;_DEBUG;_CONSOLE // APP (Release) WIN32;NDEBUG;_CONSOLE // DLL (Debug) WIN32;_DEBUG;_WINDOWS;_USRDLL;XNCBI_EXPORTS // (project_name(uppercase)+"_EXPORTS") // DLL (Relese) WIN32;NDEBUG;_WINDOWS;_USRDLL;XNCBI_EXPORTS // (project_name(uppercase)+"_EXPORTS") // All configurations:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?