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

网站开发 太原网络整合营销

网站开发 太原,网络整合营销,wordpress推荐新用户,高级网页设计师证书有用吗vs吃上clang tooling 通过源码编译clang安装必备软件GnuWin32 Tools: 拉取/下载git仓库编译 在项目中使用clangTool 通过源码编译clang 教程参考安装教程 作者本人亲身使用流程: 安装必备软件 Git:作者已经有了,自己查CMake&am…

vs吃上clang tooling

  • 通过源码编译clang
    • 安装必备软件
      • GnuWin32 Tools:
    • 拉取/下载git仓库
    • 编译
  • 在项目中使用clangTool

通过源码编译clang

教程参考安装教程
作者本人亲身使用流程:

安装必备软件

  • Git:作者已经有了,自己查
  • CMake:作者已经有了,自己查
  • Visual Studio 2019或更高的版本:作者已经有了,自己查
  • Python:作者已经有了,自己查

GnuWin32 Tools:

  • 从这里下载下载地址
  • 解压
  • 设置环境变量:xxxx\gnuwin32\bin
    在这里插入图片描述

拉取/下载git仓库

llvmGitHub仓库

  • 直接下载安装包
    在这里插入图片描述

  • cmd通过git拉去:
    git clone https://github.com/llvm/llvm-project.git

编译

  • 在llvm-project文件夹下创建一个build文件夹
  • 在build文件夹中执行cmd命令cmake -DLLVM_ENABLE_PROJECTS=clang -G "Visual Studio 17 2022" -A x64 -Thost=x64 ..\llvm
    不过这里要注意换成你的vs版本,我的是Visual Studio 17 2022
  • ok之后会在build目录下生成一个LLVM.sln,双击打开。
  • 只生成clang(全生成也行,就是有点慢)在这里插入图片描述

【插播一条简讯】
笔者在笔记本上编译的时候,出现了意想不到的炸裂情况——因为贫穷导致的堆内存不足。因为用的笔记本电脑内存比较少,只有16G,而vs编译的时候,默认最大并行数量是和CPU的核心数量一致的,导致用了过多内存,直接电脑卡死。这里的解决方案是查找VS如何修改编译的最大并行数量,直接改成1,或者其他,根据个人财力决定,简单来说就是:工具->选项->项目和解决方案->生成并运行->最大并行项目生成数->修改->确认。
在这里插入图片描述
在这里插入图片描述

在项目中使用clangTool

简单的例子,首先写cmake文件

cmake_minimum_required(VERSION 3.10)
project(MyLibToolingProject)# 设置自定义 LLVM/Clang 路径,这个是上一步编译的时候生成的地址
set(LLVM_DIR "E:/llvm-project/build/lib/cmake/llvm" CACHE PATH "")
set(Clang_DIR "E:/llvm-project/build/lib/cmake/clang" CACHE PATH "")# 查找LLVM和Clang,这里的查找是基于上一步设置的LLVM_DIR和Clang_DIR进行查找的(若没有这两个路径还有通过其他方式)
find_package(LLVM REQUIRED CONFIG)
find_package(Clang REQUIRED CONFIG)message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
message(STATUS "Using ClangConfig.cmake in: ${Clang_DIR}")# 添加LLVM和Clang的包含目录
include_directories(${LLVM_INCLUDE_DIRS})
include_directories(${CLANG_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})# 添加可执行文件,我这里只有一个main.cpp
add_executable(my-tool main.cpp)# 链接必要的LLVM和Clang库
target_link_libraries(my-toolPRIVATEclangToolingclangFrontendclangASTclangBasic${LLVM_LIBRARIES}
)# 设置C++标准
set_target_properties(my-tool PROPERTIESCXX_STANDARD 17CXX_STANDARD_REQUIRED ON
)

main.cpp文件中这样

#include "iostream"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/ASTMatchers/ASTMatchers.h"
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Tooling.h"using namespace clang;
using namespace clang::tooling;
using namespace clang::ast_matchers;class DerivedFromDbObjectCallback : public MatchFinder::MatchCallback {
public:void run(const MatchFinder::MatchResult &Result) override {const CXXRecordDecl *Decl =Result.Nodes.getNodeAs<CXXRecordDecl>("derivedClass");if (!Decl)return;std::cout << "Class derived from DbObject found: "<< Decl->getNameAsString() << std::endl;std::cout << "Non-static member variables:\n";for (const FieldDecl *Field : Decl->fields()) {std::cout << "  - " << Field->getNameAsString() << std::endl;}const CXXMethodDecl *SaveFunc =Result.Nodes.getNodeAs<CXXMethodDecl>("saveFunc");if (SaveFunc == nullptr || !SaveFunc->hasBody()) {return;}}
};int main(int argc, const char **argv) {std::string errorMsg;auto cmpData =CompilationDatabase::loadFromDirectory("E:/CppTest/astTest", errorMsg);if (!errorMsg.empty()) {std::cout << errorMsg << std::endl;}if (cmpData.get() == nullptr) {return 1;}std::vector<std::string> sourceFilesPath;for (const auto &path : cmpData->getAllCompileCommands()) {sourceFilesPath.push_back(path.Filename);}ClangTool Tool(*cmpData, sourceFilesPath);MatchFinder Finder;DerivedFromDbObjectCallback Callback;// 匹配所有直接或间接继承自 DbObject 的类声明auto Matcher =cxxRecordDecl(isDerivedFrom("DbObject")).bind("derivedClass");Finder.addMatcher(Matcher, &Callback);return Tool.run(newFrontendActionFactory(&Finder).get());
}

在cmd中的操作,其中,cmake.txt和main.cpp是在同一文件夹下,下边的操作是基于这个文件的继续操作,我用的是Vs2022,如果不是,需要改。

> mkdir build  #生成build文件夹
> cd build #移动到build文件夹
> cmake -G "Visual Studio 17 2022" -A x64 .. #编译

完事会发现在build中生成了一个sln项目,打开编译,不报错就ok了。
(main.cpp的具体内容先不管了,反正能编译成功就说明成功了)。


文章转载自:

http://hLZrMlTr.skcgh.cn
http://VVFihT2Y.skcgh.cn
http://l7ZyxiCb.skcgh.cn
http://8gM1JTLO.skcgh.cn
http://ffGlmsRw.skcgh.cn
http://guiwwwSS.skcgh.cn
http://DYpivgdP.skcgh.cn
http://qLB9OmKt.skcgh.cn
http://8pCjBvC9.skcgh.cn
http://55FWcryb.skcgh.cn
http://Kvg4Cqj4.skcgh.cn
http://FJfRZ2UR.skcgh.cn
http://QwMcQxnO.skcgh.cn
http://b52hgvUS.skcgh.cn
http://sdpTkDIR.skcgh.cn
http://Q5nfMvrf.skcgh.cn
http://qJsgOCzX.skcgh.cn
http://7FKZ0817.skcgh.cn
http://WEhfLvtN.skcgh.cn
http://QfDoCeAs.skcgh.cn
http://Cu3ujHVL.skcgh.cn
http://egZfD3P2.skcgh.cn
http://3Ei7i5vJ.skcgh.cn
http://fbjos0kJ.skcgh.cn
http://3WrJqRvj.skcgh.cn
http://UM5jFYOD.skcgh.cn
http://rlMysUUN.skcgh.cn
http://UBZq9lle.skcgh.cn
http://BFd97269.skcgh.cn
http://zFMNljQG.skcgh.cn
http://www.dtcms.com/wzjs/716045.html

相关文章:

  • 建设网站怎样分配给用户空间做采购应该关注的网站
  • 百容千域可以免费做网站吗网站建设单子
  • wordpress 主题开发上海网站关键词优化
  • 在唐山做网站多少钱河南郑州最新消息
  • 厦门住房建设局网站服务器租用托管
  • 广州网站建设报价表爱网站站长工具
  • google建立网站用户体验的重要性
  • 如何快速建一个网站网站程序制作软件
  • 南京自助建站网站北京软件开发公司官网
  • 国外网站建设什么价格低南宁网站建设哪里有
  • 找人做网站要密码吗大连专业制作网站
  • 做网站公司 衡阳公司推广公司名字大全
  • 哪些网站可以做简历宁波比较好的外贸公司
  • 网上引流推广怎么做光泽网站建设wzjseo
  • 建设部证书查询官方网站网络营销文案标题
  • 手机网站跳转怎么办wordpress菜单导航代码
  • 哪个网站有教做面食广平网站建设
  • 网站建设数据技术赶集网网站建设ppt模板
  • 枸杞网站建设方案网店代运营费用
  • 网站开发的职业分析thinkphp2.1网站挂文件
  • 乐陵市人力资源中心网站制作网站
  • 全国物流网站网站维护的要求包括哪些
  • 重庆建设网站建站潜江人才网官网
  • 自己做的网站怎么才有用户访问四川炜航建筑公司网站
  • 关于做网站的书wordpress 后台添加文章 没编辑功能
  • 朝阳免费网站制作90设计网素材官网
  • 文本怎样做阅读链接网站网络设计思路
  • 自己建一个网站需要什么建工e采网
  • 网站规划的原则做网站图片大会导致慢
  • 广州平台网站搭建外贸建站网站推广