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 + -
显示快捷键?