⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msvc_prj_utils.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            compilerl_tool->SetAttlist().SetPrecompiledHeaderThrough                                                            (pch_usage.second);        } else if (pch_usage.first == eUse) {            compilerl_tool->SetAttlist().SetPreprocessorDefinitions                              (GetApp().GetMetaMakefile().GetPchUsageDefine());            compilerl_tool->SetAttlist().SetUsePrecompiledHeader("3");            compilerl_tool->SetAttlist().SetPrecompiledHeaderThrough                                                            (pch_usage.second);        }        else {            compilerl_tool->SetAttlist().SetUsePrecompiledHeader("0");            compilerl_tool->SetAttlist().SetPrecompiledHeaderThrough("");        }        file_config->SetTool(*compilerl_tool);        file->SetFileConfiguration().push_back(file_config);    }    //    CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());    ce->SetFile(*file);    filter->SetFF().SetFF().push_back(ce);}CSrcToFilterInserterWithPch::TPch CSrcToFilterInserterWithPch::DefinePchUsage(const string& project_dir,                                            const string& rel_source_file){    // Check global permission    if ( !GetApp().GetMetaMakefile().IsPchEnabled() )        return TPch(eNotUse, "");    string abs_source_file =         CDirEntry::ConcatPath(project_dir, rel_source_file);    abs_source_file = CDirEntry::NormalizePath(abs_source_file);    // .c files - not use PCH    string ext;    CDirEntry::SplitPath(abs_source_file, NULL, NULL, &ext);    if ( NStr::CompareNocase(ext, ".c") == 0)        return TPch(eNotUse, "");    // PCH usage is defined in msvc master makefile    string pch_file =         GetApp().GetMetaMakefile().GetUsePchThroughHeader                                       (m_ProjectId,                                        abs_source_file,                                         GetApp().GetProjectTreeInfo().m_Src);    // No PCH - not use    if ( pch_file.empty() )        return TPch(eNotUse, "");    if (m_PchHeaders.find(pch_file) == m_PchHeaders.end()) {        // New PCH - this source file will create it        m_PchHeaders.insert(pch_file);        return TPch(eCreate, pch_file);    } else {        // Use PCH (previously created)        return TPch(eUse, pch_file);    }}//-----------------------------------------------------------------------------CBasicProjectsFilesInserter::CBasicProjectsFilesInserter                                (CVisualStudioProject*    vcproj,                                const string&            project_id,                                const list<SConfigInfo>& configs,                                const string&            project_dir)    :m_Vcproj     (vcproj),     m_SrcInserter(project_id,                    configs,                    project_dir),     m_Filters    (project_dir){    m_Filters.Initilize();}CBasicProjectsFilesInserter::~CBasicProjectsFilesInserter(void){}void CBasicProjectsFilesInserter::AddSourceFile(const string& rel_file_path){    m_Filters.AddSourceFile(m_SrcInserter, rel_file_path);}void CBasicProjectsFilesInserter::AddHeaderFile(const string& rel_file_path){    m_Filters.AddHeaderFile(rel_file_path);}void CBasicProjectsFilesInserter::AddInlineFile(const string& rel_file_path){    m_Filters.AddInlineFile(rel_file_path);}void CBasicProjectsFilesInserter::Finalize(void){    m_Vcproj->SetFiles().SetFilter().push_back(m_Filters.m_SourceFiles);    if ( m_Filters.m_HeaderFilesPrivate->IsSetFF() )    {        CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());        ce->SetFilter(*m_Filters.m_HeaderFilesPrivate);        m_Filters.m_HeaderFiles->SetFF().SetFF().push_back(ce);    }    if ( m_Filters.m_HeaderFilesImpl->IsSetFF() )    {        CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());        ce->SetFilter(*m_Filters.m_HeaderFilesImpl);        m_Filters.m_HeaderFiles->SetFF().SetFF().push_back(ce);    }    m_Vcproj->SetFiles().SetFilter().push_back(m_Filters.m_HeaderFiles);    m_Vcproj->SetFiles().SetFilter().push_back(m_Filters.m_InlineFiles);}//-----------------------------------------------------------------------------static bool s_IsPrivateHeader(const string& header_abs_path){    string src_dir = GetApp().GetProjectTreeInfo().m_Src;    return header_abs_path.find(src_dir) != NPOS;}static bool s_IsImplHeader(const string& header_abs_path){    string src_trait = CDirEntry::GetPathSeparator()        +                       GetApp().GetProjectTreeInfo().m_Impl +                       CDirEntry::GetPathSeparator();    return header_abs_path.find(src_trait) != NPOS;}//-----------------------------------------------------------------------------CBasicProjectsFilesInserter::SFiltersItem::SFiltersItem(void){}CBasicProjectsFilesInserter::SFiltersItem::SFiltersItem                                                    (const string& project_dir)    :m_ProjectDir(project_dir){}void CBasicProjectsFilesInserter::SFiltersItem::Initilize(void){    m_SourceFiles.Reset(new CFilter());    m_SourceFiles->SetAttlist().SetName("Source Files");    m_SourceFiles->SetAttlist().SetFilter            ("cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx");    m_HeaderFiles.Reset(new CFilter());    m_HeaderFiles->SetAttlist().SetName("Header Files");    m_HeaderFiles->SetAttlist().SetFilter("h;hpp;hxx;hm;inc;xsd");    m_HeaderFilesPrivate.Reset(new CFilter());    m_HeaderFilesPrivate->SetAttlist().SetName("Private");    m_HeaderFilesPrivate->SetAttlist().SetFilter("h;hpp;hxx;hm;inc;xsd");    m_HeaderFilesImpl.Reset(new CFilter());    m_HeaderFilesImpl->SetAttlist().SetName("Impl");    m_HeaderFilesImpl->SetAttlist().SetFilter("h;hpp;hxx;hm;inc;xsd");    m_InlineFiles.Reset(new CFilter());    m_InlineFiles->SetAttlist().SetName("Inline Files");    m_InlineFiles->SetAttlist().SetFilter("inl");}void CBasicProjectsFilesInserter::SFiltersItem::AddSourceFile                           (CSrcToFilterInserterWithPch& inserter_w_pch,                            const string&                rel_file_path){    inserter_w_pch(m_SourceFiles, rel_file_path);}void CBasicProjectsFilesInserter::SFiltersItem::AddHeaderFile                                                  (const string& rel_file_path){    CRef< CFFile > file(new CFFile());    file->SetAttlist().SetRelativePath(rel_file_path);    CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());    ce->SetFile(*file);        string abs_header_path =         CDirEntry::ConcatPath(m_ProjectDir, rel_file_path);    abs_header_path = CDirEntry::NormalizePath(abs_header_path);    if ( s_IsPrivateHeader(abs_header_path) ) {        m_HeaderFilesPrivate->SetFF().SetFF().push_back(ce);    } else if ( s_IsImplHeader(abs_header_path) ) {        m_HeaderFilesImpl->SetFF().SetFF().push_back(ce);    } else {        m_HeaderFiles->SetFF().SetFF().push_back(ce);    }}void CBasicProjectsFilesInserter::SFiltersItem::AddInlineFile                                                  (const string& rel_file_path){    CRef< CFFile > file(new CFFile());    file->SetAttlist().SetRelativePath(rel_file_path);    CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());    ce->SetFile(*file);    m_InlineFiles->SetFF().SetFF().push_back(ce);}//-----------------------------------------------------------------------------CDllProjectFilesInserter::CDllProjectFilesInserter                                (CVisualStudioProject*    vcproj,                                 const CProjKey           dll_project_key,                                 const list<SConfigInfo>& configs,                                 const string&            project_dir)    :m_Vcproj        (vcproj),     m_DllProjectKey (dll_project_key),     m_ProjectDir    (project_dir),     m_SrcInserter   (dll_project_key.Id(),                       configs,                       project_dir),     m_PrivateFilters(project_dir){    // Private filters initilization    m_PrivateFilters.m_SourceFiles.Reset(new CFilter());    m_PrivateFilters.m_SourceFiles->SetAttlist().SetName("Source Files");    m_PrivateFilters.m_SourceFiles->SetAttlist().SetFilter            ("cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx");    m_PrivateFilters.m_HeaderFiles.Reset(new CFilter());    m_PrivateFilters.m_HeaderFiles->SetAttlist().SetName("Header Files");    m_PrivateFilters.m_HeaderFiles->SetAttlist().SetFilter("h;hpp;hxx;hm;inc;xsd");    m_PrivateFilters.m_HeaderFilesPrivate.Reset(new CFilter());    m_PrivateFilters.m_HeaderFilesPrivate->SetAttlist().SetName("Private");    m_PrivateFilters.m_HeaderFilesPrivate->SetAttlist().SetFilter("h;hpp;hxx;hm;inc;xsd");        m_PrivateFilters.m_HeaderFilesImpl.Reset(new CFilter());    m_PrivateFilters.m_HeaderFilesImpl->SetAttlist().SetName("Impl");    m_PrivateFilters.m_HeaderFilesImpl->SetAttlist().SetFilter("h;hpp;hxx;hm;inc;xsd");    m_PrivateFilters.m_InlineFiles.Reset(new CFilter());    m_PrivateFilters.m_InlineFiles->SetAttlist().SetName("Inline Files");    m_PrivateFilters.m_InlineFiles->SetAttlist().SetFilter("inl");    // Hosted Libraries filter (folder)    m_HostedLibrariesRootFilter.Reset(new CFilter());    m_HostedLibrariesRootFilter->SetAttlist().SetName("Hosted Libraries");    m_HostedLibrariesRootFilter->SetAttlist().SetFilter("");}CDllProjectFilesInserter::~CDllProjectFilesInserter(void){}void CDllProjectFilesInserter::AddSourceFile (const string& rel_file_path){    string abs_path = CDirEntry::ConcatPath(m_ProjectDir, rel_file_path);    abs_path = CDirEntry::NormalizePath(abs_path);        CProjKey proj_key = GetApp().GetDllFilesDistr().GetSourceLib(abs_path, m_DllProjectKey);        if (proj_key == CProjKey()) {        m_PrivateFilters.AddSourceFile(m_SrcInserter, rel_file_path);        return;    }    THostedLibs::iterator p = m_HostedLibs.find(proj_key);    if (p != m_HostedLibs.end()) {        TFiltersItem& filters_item = p->second;        filters_item.AddSourceFile(m_SrcInserter, rel_file_path);        return;    }    TFiltersItem new_item(m_ProjectDir);    new_item.Initilize();    new_item.AddSourceFile(m_SrcInserter, rel_file_path);    m_HostedLibs[proj_key] = new_item;}void CDllProjectFilesInserter::AddHeaderFile(const string& rel_file_path){    string abs_path = CDirEntry::ConcatPath(m_ProjectDir, rel_file_path);    abs_path = CDirEntry::NormalizePath(abs_path);        CProjKey proj_key = GetApp().GetDllFilesDistr().GetHeaderLib(abs_path, m_DllProjectKey);        if (proj_key == CProjKey()) {        m_PrivateFilters.AddHeaderFile(rel_file_path);        return;    }    THostedLibs::iterator p = m_HostedLibs.find(proj_key);    if (p != m_HostedLibs.end()) {        TFiltersItem& filters_item = p->second;        filters_item.AddHeaderFile(rel_file_path);        return;    }    TFiltersItem new_item(m_ProjectDir);    new_item.Initilize();    new_item.AddHeaderFile(rel_file_path);    m_HostedLibs[proj_key] = new_item;}void CDllProjectFilesInserter::AddInlineFile(const string& rel_file_path){    string abs_path = CDirEntry::ConcatPath(m_ProjectDir, rel_file_path);    abs_path = CDirEntry::NormalizePath(abs_path);        CProjKey proj_key = GetApp().GetDllFilesDistr().GetInlineLib(abs_path, m_DllProjectKey);        if (proj_key == CProjKey()) {        m_PrivateFilters.AddInlineFile(rel_file_path);        return;    }    THostedLibs::iterator p = m_HostedLibs.find(proj_key);    if (p != m_HostedLibs.end()) {        TFiltersItem& filters_item = p->second;        filters_item.AddInlineFile(rel_file_path);        return;    }    TFiltersItem new_item(m_ProjectDir);    new_item.Initilize();    new_item.AddInlineFile(rel_file_path);    m_HostedLibs[proj_key] = new_item;}void CDllProjectFilesInserter::Finalize(void){    m_Vcproj->SetFiles().SetFilter().push_back(m_PrivateFilters.m_SourceFiles);    if ( !m_PrivateFilters.m_HeaderFilesPrivate->IsSetFF() )    {        CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());        ce->SetFilter(*m_PrivateFilters.m_HeaderFilesPrivate);        m_PrivateFilters.m_HeaderFiles->SetFF().SetFF().push_back(ce);    }    if ( !m_PrivateFilters.m_HeaderFilesImpl->IsSetFF() )    {        CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());        ce->SetFilter(*m_PrivateFilters.m_HeaderFilesImpl);        m_PrivateFilters.m_HeaderFiles->SetFF().SetFF().push_back(ce);    }    m_Vcproj->SetFiles().SetFilter().push_back(m_PrivateFilters.m_HeaderFiles);    m_Vcproj->SetFiles().SetFilter().push_back(m_PrivateFilters.m_InlineFiles);    NON_CONST_ITERATE(THostedLibs, p, m_HostedLibs) {        const CProjKey& proj_key     = p->first;        TFiltersItem&   filters_item = p->second;        CRef<CFilter> hosted_lib_filter(new CFilter());        hosted_lib_filter->SetAttlist().SetName(CreateProjectName(proj_key));        hosted_lib_filter->SetAttlist().SetFilter("");        {{            CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());            ce->SetFilter(*(filters_item.m_SourceFiles));            hosted_lib_filter->SetFF().SetFF().push_back(ce);        }}        if ( filters_item.m_HeaderFilesPrivate->IsSetFF() )        {            CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());            ce->SetFilter(*filters_item.m_HeaderFilesPrivate);            filters_item.m_HeaderFiles->SetFF().SetFF().push_back(ce);        }        if ( filters_item.m_HeaderFilesImpl->IsSetFF() )        {            CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());            ce->SetFilter(*filters_item.m_HeaderFilesImpl);            filters_item.m_HeaderFiles->SetFF().SetFF().push_back(ce);        }        {{            CRef< CFilter_Base::C_FF::C_E > ce(new CFilter_Base::C_FF::C_E());            ce->SetFilter(*(filters_item.m_HeaderFiles));            hosted_lib_filter->SetFF().SetFF().push_back(ce);        }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -