当前位置: 首页 > news >正文

室内设计师网名深圳谷歌seo培训班

室内设计师网名,深圳谷歌seo培训班,网站 反链,文字代码生成器背景 本来想解析VS的项目配置文件(*.vcxproj)#xff0c;配合cppclean来发现多余的#incldue。 结果发现低估了难度#xff0c;VS会间接引入许多目录。 略有不甘#xff0c;暂且作为一个解析XML文件的示例。 代码 VSProjectParser.h #include QVector #include…背景 本来想解析VS的项目配置文件(*.vcxproj)配合cppclean来发现多余的#incldue。 结果发现低估了难度VS会间接引入许多目录。 略有不甘暂且作为一个解析XML文件的示例。 代码 VSProjectParser.h #include QVector #include memoryclass VSProjectParser { public:VSProjectParser (const QString vsProjectFilePath);QVectorQString getIncludeDirectoriesRealPath ();QVectorQString getCppFilesRealPath ();QVectorQString getHeadFilesRealPath ();private:class Impl;std::shared_ptrImpl m_impl nullptr; };VSProjectParser.cpp #include VSProjectParser.h#include QDebug #include QDir #include QDomDocument #include QDomElement #include QDomNode #include QFile #include QFileInfo #include QHash #include memoryclass Document { public:Document (const QString projFilePath);QVectorQString extractCppFiles ();QVectorQString extractHeadFiles ();private:void extractTasgInfo ();QHashQString, QVectorQString m_tagsInfo {};QString m_projFilePath ; };class VSProjectParser::Impl { public:Impl (const QString vsProjectFilePath) : m_vsProjectFileInfo (vsProjectFilePath), m_document (vsProjectFilePath){}QFileInfo m_vsProjectFileInfo ;Document m_document; };Document::Document (const QString projFilePath) : m_projFilePath (projFilePath) {extractTasgInfo(); }QVectorQString Document::extractCppFiles() {QVectorQString cppTags {ClCompile};QVectorQString ret;for (QString tag : cppTags) {if (m_tagsInfo.contains (tag))ret.append (m_tagsInfo.value (tag));}return ret; }QVectorQString Document::extractHeadFiles() {QVectorQString headTags {ClInclude, QtMoc};QVectorQString ret;for (QString tag : headTags) {if (m_tagsInfo.contains (tag))ret.append (m_tagsInfo.value (tag));}return ret; }void Document::extractTasgInfo() {QFile file (m_projFilePath);if (!file.open (QIODevice::ReadOnly)) {qDebug() Failed to open the file.;return;}QDomDocument doc;if (!doc.setContent (file)) {qDebug() Failed to parse the file into a DOM tree.;return;}file.close();QDomElement root doc.documentElement();QHashQString, QVectorQString tags_with_include_attribute;constexpr auto ATTR_INCLUDE Include;QDomNodeList itemGroups root.elementsByTagName (ItemGroup);for (int i 0; i itemGroups.count(); i) {QDomNode itemGroup itemGroups.at (i);QDomNodeList children itemGroup.childNodes();for (int j 0; j children.count(); j) {QDomNode child children.at (j);if (child.isElement()) {QDomElement element child.toElement();QString tagName element.tagName();tags_with_include_attribute[tagName].push_back (element.attribute (ATTR_INCLUDE));}}}QVectorQString keys;m_tagsInfo tags_with_include_attribute; }VSProjectParser::VSProjectParser (const QString vsProjectFilePath) : m_impl (new Impl (vsProjectFilePath)) { }QVectorQString VSProjectParser::getIncludeDirectoriesRealPath() {QVectorQString headers getHeadFilesRealPath();QVectorQString ret;for (QString file : headers) {QFileInfo fileInfo (file);if (!fileInfo.exists()) {qDebug() __FUNCTION__ File not found: file;continue;}ret.append (fileInfo.dir().absolutePath());}return ret; }QVectorQString VSProjectParser::getCppFilesRealPath() {QVectorQString includes m_impl-m_document.extractCppFiles();QVectorQString ret;for (QString file : includes) {file m_impl-m_vsProjectFileInfo.dir().absolutePath() / file;QFileInfo fileInfo (file);if (fileInfo.exists())ret.append (fileInfo.absoluteFilePath());elseqDebug() __FUNCTION__ File not found: file;}return ret; }QVectorQString VSProjectParser::getHeadFilesRealPath() {QVectorQString includes m_impl-m_document.extractHeadFiles();QVectorQString ret;for (QString file : includes) {file m_impl-m_vsProjectFileInfo.dir().absolutePath() / file;QFileInfo fileInfo (file);if (fileInfo.exists())ret.append (fileInfo.absoluteFilePath());elseqDebug() __FUNCTION__ File not found: file;}return ret; }
http://www.dnsts.com.cn/news/24721.html

相关文章:

  • 万网注册域名就可以做网站吗wordpress批量该连接
  • 优秀个人网站设计欣赏沧州建设局网站
  • 寺庙网站模板网站在工信部备案
  • 分销网站开发合同企业电话名录
  • 婚恋网站建设方案网页制作学校
  • 模板网站和定制网站影响排名网站是用什么语言写的
  • 免费做爰小说网站WordPress源码路由
  • 安徽华强建设集团网站中国最牛的央企排名
  • 做汉字词卡的网站购物类网站开发
  • 电子商务网站建设与维护 论文WordPress前端发布文章
  • 免费网站建站百度wordpress 环保主题
  • 做外贸网站商城门户网站排行榜
  • 深圳建网站兴田德润专业企业网站建设 西宁
  • 一个网站的建设方案ic设计公司排名
  • 凡科网站怎么做链接头像logo江苏专业做网站
  • 用ps做网站主页制作一个网站需要什么
  • 做网站保证效果做网站的
  • 最好的建设网站网站开发后如何维护
  • 网站引导页动态效果怎么做川畅科技网站设计
  • 专业制作网站公司做电子请帖网站有哪些
  • 刷leetcode对网站开发有用吗常见的o2o平台有哪些
  • 自建网站需要备案吗模板和网站的区别
  • 怎么在自己做的网站上发视频教程中国建材人才网
  • 商丘网站公司优化公司内部流程
  • 学生求职网站的需求分析怎么做网页微信版登录
  • 邮箱网站怎么做装修公司网站源码php
  • 北京做网站公司电话seo软文推广工具
  • 扬州外贸网站seowordpress博客头图怎么改
  • 医院网站建设 费用做暧暧视频免费视频中国网站
  • 一个简单的网站怎么做的太原网站公司