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

淘客网站开发做个网站要多少钱 一般

淘客网站开发,做个网站要多少钱 一般,中核五公司值得去吗,wordpress 头像 国内背景 本来想解析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 <memory>class VSProjectParser {
public:VSProjectParser (const QString &vsProjectFilePath);QVector<QString> getIncludeDirectoriesRealPath ();QVector<QString> getCppFilesRealPath ();QVector<QString> getHeadFilesRealPath ();private:class Impl;std::shared_ptr<Impl> 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 <memory>class Document {
public:Document (const QString &projFilePath);QVector<QString> extractCppFiles ();QVector<QString> extractHeadFiles ();private:void extractTasgInfo ();QHash<QString, QVector<QString>> 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();
}QVector<QString>
Document::extractCppFiles()
{QVector<QString> cppTags {"ClCompile"};QVector<QString> ret;for (QString tag : cppTags) {if (m_tagsInfo.contains (tag))ret.append (m_tagsInfo.value (tag));}return ret;
}QVector<QString>
Document::extractHeadFiles()
{QVector<QString> headTags {"ClInclude", "QtMoc"};QVector<QString> 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();QHash<QString, QVector<QString>> 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));}}}QVector<QString> keys;m_tagsInfo = tags_with_include_attribute;
}VSProjectParser::VSProjectParser (const QString &vsProjectFilePath) : m_impl (new Impl (vsProjectFilePath))
{
}QVector<QString>
VSProjectParser::getIncludeDirectoriesRealPath()
{QVector<QString> headers = getHeadFilesRealPath();QVector<QString> 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;
}QVector<QString>
VSProjectParser::getCppFilesRealPath()
{QVector<QString> includes = m_impl->m_document.extractCppFiles();QVector<QString> 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;
}QVector<QString>
VSProjectParser::getHeadFilesRealPath()
{QVector<QString> includes = m_impl->m_document.extractHeadFiles();QVector<QString> 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.yayakq.cn/news/196018/

相关文章:

  • 烟台网站开发公司运城市住房与城乡建设厅网站
  • vancl网站flash教程网站首页
  • 网站建设公司投诉电话做网站公司促销海报
  • 网站建设江苏价格划算的网站开发
  • xcode 网站开发深圳特区报
  • 有没有帮忙做问卷调查的网站地产公司网站建设计划书
  • wordpress 建站网站建设加盟招商
  • 宝塔网站建设跳转微信可打开成都网页制作
  • 网站的引导页面是什么意思电脑学堂网页制作
  • 网站平台建设方案书收费网站设计
  • 建站好的公司重庆市建设工程信息网更改
  • 网站建设水平淘宝客高佣金网站建设
  • 上海电子商城网站制作个人网站建设教程 ppt
  • 龙岩网站建设要多昆明移动互联网开发
  • 手机商城网站案例WordPress搭建连不上数据库
  • 做网上商城网站哪家好做区域分析的地图网站
  • 网站加入百度广告联盟微信网站主题
  • 注册一个免费的网站建设一个网站需要哪些步骤
  • 做购物网站的步骤重庆建网站
  • 网站都是程序员做的吗个人网页素材
  • 百度不收录我的网站企业网站背景颜色
  • 北京住房与建设部网站首页wordpress增加下载功能
  • 深圳鹏洲建设工程有限公司网站医院网站html模板
  • 常州网站推广公司哪家好网站点击量 哪里查询
  • 做淘宝客没有网站怎么做体球网足球世界杯
  • 六安网站建设电话广东省广州市白云区钟落潭镇
  • 上海域名网站吗怎么做相册网站
  • 网站托管一年多少钱巴中建设厅网站电话
  • 关键词优化网站asp网站安全吗
  • 视频网站做app还是h5山西seo推广