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

网站制作多久能完成怎样做网络推广营销

网站制作多久能完成,怎样做网络推广营销,网站不备案可以做百度推广吗,wordpress 评论回复邮件通知LibTooling(库工具) LibTooling是个支持基于Clang编写独立工具的库. 在此,为LLVM安装Clang工具 介绍 用LibTooling构建的工具(如Clang插件)通过代码运行FrontendActions. 这里演示运行Clang的快速检查一堆代码语法的SyntaxOnlyAction的不同方法. 解析内存中的代码片 如果想…

LibTooling(库工具)

LibTooling是个支持基于Clang编写独立工具的库.
在此,为LLVM安装Clang工具

介绍

LibTooling构建的工具(如Clang插件)通过代码运行FrontendActions.
这里演示运行Clang的快速检查一堆代码语法SyntaxOnlyAction的不同方法.

解析内存中的代码片

如果想对,如对ClangAST的某些部分单元测试代码运行FrontendAction,则runToolOnCode就是你找的.如:

#include "clang/Tooling/Tooling.h"
TEST(runToolOnCode, CanSyntaxCheckCode) {//`runToolOnCode`返回在给定代码上是否正确`操作`运行.EXPECT_TRUE(runToolOnCode(std::make_unique<clang::SyntaxOnlyAction>(), "class X {};"));
}

编写独立工具

一旦对FrontendAction运行了单元测试,使其不可中断,就可创建独立工具了.作为独立运行clang的工具,首先要确定要为指定文件使用哪些命令行参数.

为此,创建了一个编译数据库.有很多种创建编译数据库的方法,可根据命令行选项来支持所有这些方法.
CommonOptionsParser类,负责解析与编译数据库和输入相关的命令行参数,以便所有工具可共享实现.

解析常用工具选项

可从构建目录命令行读取编译数据库.使用CommonOptionsParser显式指定编译命令行,用-p命令行选项指定构建路径,及用源文件路径自动定位编译数据库.

#include "clang/Tooling/CommonOptionsParser.h"
#include "llvm/Support/CommandLine.h"
using namespace clang::tooling;
//对`所有命令行选项`,应用自定义分类,以便只显示他们.
static llvm::cl::OptionCategory MyToolCategory("my-tool options");
int main(int argc, const char **argv) {//`CommonOptionsParser`构造器解析参数,并创建`编译数据库`.如果出现错误,它终止程序.CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);//使用`OptionsParser.getCompilations()`和`OptionsParser.getSourcePathList()`提取`编译数据库`和输入文件路径列表.
}

创建并运行ClangTool

一旦有了编译数据库,就可创建一个ClangTool并在一些代码上运行FrontendAction.如,要对"a.cc""b.cc"文件运行SyntaxOnlyAction,可这样写:

//可在同一进程中运行多个源的`clang`工具.
std::vector<std::string> Sources;
Sources.push_back("a.cc");
Sources.push_back("b.cc");
//把创建的`编译数据库`和要运行的`源码`交给`工具构造器`.
ClangTool Tool(OptionsParser.getCompilations(), Sources);
//`ClangTool`要为运行的每个`翻译单元`提供一个新的`FrontendAction`.因此,它以`FrontendActionFactory`作为参数.
//要从给定的`FrontendAction`类型创建`FrontendActionFactory`,调用`newFrontendActionFactory<clang::SyntaxOnlyAction>()`.
int result = Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>().get());

组合在一起,第一个工具

现在,合并前面两个步骤到第一个实际工具中.此例工具更高级版本也签入到tools/clang-check/ClangCheck.cppclang树中.

//声明`clang::SyntaxOnlyAction`.
#include "clang/Frontend/FrontendActions.h"
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Tooling.h"
//声明`llvm::cl::extrahelp`.
#include "llvm/Support/CommandLine.h"using namespace clang::tooling;
using namespace llvm;
static cl::OptionCategory MyToolCategory("my-tool options");
static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);
//之后可添加此指定工具的帮助消息.
static cl::extrahelp MoreHelp("\nMore help text...\n");
int main(int argc, const char **argv) {CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);ClangTool Tool(OptionsParser.getCompilations(), OptionsParser.getSourcePathList());return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>().get());
}

在某些代码上运行该工具

检出并构建clang时,已构建``clang-check,并在构建目录中的bin/clang-check中.

可通过在"--"分隔符后,指定``llvm仓库中的文件运行clang-check所有必需参数:

$ cd /path/to/source/llvm
$ export BD=/path/to/build/llvm
$ $BD/bin/clang-check tools/clang/tools/clang-check/ClangCheck.cpp -- \clang++ -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS \-Itools/clang/include -I$BD/include -Iinclude \-Itools/clang/lib/Headers -c

或,还可按把编译命令数据库输出到其构建目录中,来配置cmake:

# 或从UI设置CMAKE_EXPORT_COMPILE_COMMANDS.
$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .

这在目录中创建叫compile_commands.json的文件.现在,你可通过按第一个参数指定构建路径,并按进一步的位置参数指定一些源文件,来对项目中的文件运行clang-check:

$ cd /path/to/source/llvm
$ export BD=/path/to/build/llvm
$ $BD/bin/clang-check -p $BD tools/clang/tools/clang-check/ClangCheck.cpp

内置包含

Clang工具需要其内置头文件,并按Clang方式搜索它们.因此,默认在$(dirname/path/to/tool)/中查找内置头文件.

相对工具二进制文件的/lib/clang/3.3/include.对在构建clang-resource-headers后,从llvm的顶级二进制目录运行的工具,或如果该工具clang二进制文件旁边的clang安装的二进制目录运行,则开箱即用.

提示:如果工具找不到stddef.h或类似头文件,请使用-v调用该工具并查看它所查找的搜索路径.

连接

有关要链接的库列表,请查看工具的CMake文件之一(如clang-check/CMakeList.txt)这里.

http://www.qdjiajiao.com/news/5355.html

相关文章:

  • 开个网站卖机器怎么做百度引擎搜索引擎
  • 私服网站怎么做中囯联通腾迅
  • 乐清网站建设服务百度代理授权查询
  • 凡客客服电话网站seo关键词优化
  • 网站中转页关键词营销优化
  • 淘宝上面建设网站最有效的100个营销方法
  • web网站开发报告中国网新山东
  • 荆州网站开发好招人吗网店无货源怎么做
  • 深圳外贸网站建设公司网站宣传文案
  • 网站如何做镜像如何在百度推广自己的产品
  • 电商网站开发文档精准营销通俗来说是什么
  • 国内新冠最新消息seo实战密码电子书
  • 网站推广方式有哪些权重查询工具
  • 萝岗网站建设优化seo免费诊断
  • 韶关市网站建设招标山东企业网站建设
  • 网站开发中界面国外搜索引擎排名百鸣
  • 怎么建设阿里巴巴国际网站首页今日头条权重查询
  • logo素材库网站免费百度网盘app下载
  • 网站为什么需要空间微信小程序开发平台
  • 广州网站建设丿新科送推广南京seo
  • 如何做国外网站的镜像网站建设的意义和目的
  • 没有公司做网站可以吗互联网舆情监测系统
  • github允许做网站服务器辽宁好的百度seo公司
  • 怎么做移动网站深圳优化公司统高粱seo
  • 基于安卓系统的app开发seo推广软件下载
  • 互动网站建设什么意思如何制作网页最简单的方法
  • 广州优秀网站设计一键优化
  • 用织梦做外文网站seo快排公司哪家好
  • 网站被主流搜索引擎收录的网页数量是多少上海热点新闻
  • 怎么使用电脑是做网站武汉百度快速排名提升