首页 > 其他分享 >Chromium GN目标指南 - 查看GN目标(三)

Chromium GN目标指南 - 查看GN目标(三)

时间:2024-12-22 10:28:09浏览次数:6  
标签:tests unittests 目标 build test GN Chromium rust

引言

在前面的文章中,我们介绍了 Chromium 构建系统中的 GN 的基本概念、目录结构和常用工具,并通过构建一个简单的 Demo 学习了如何编写和使用 executable 目标。在本篇文章中,我们将学习如何查看和挑选合适的 GN 目标,以便于我们进行各种测试、分析和调试工作。

查看GN目标

在 Chromium 的构建过程中,会生成大量的 GN 目标,这些目标代表了不同的构建产物,例如可执行文件、静态库、动态库、测试程序等。了解如何查看这些目标对于我们理解构建过程和进行特定目标的构建至关重要。

我们可以使用 gn ls 命令来列出指定目录下的所有 GN 目标。例如,要查看 out/Default 目录下的所有目标,可以在 Chromium 源码的 src 目录下执行以下命令:

gn ls .\out\Default\ 

这条命令会列出 out/Default 目录下所有可被构建的 GN 目标。

然而,由于 Chromium 项目庞大,gn ls 命令的输出结果可能非常多,直接查看并不方便。我们可以结合一些其他的命令行工具来过滤和查找特定的目标。

例如,我们可以使用 PowerShell 中的 Select-String 命令 (类似于 Linux 中的 grep) 来筛选包含特定关键词的目标。假设我们想要查找所有包含 "unittest" 的目标,并将结果保存到 uni.txt 文件中,可以使用以下命令:

gn ls .\out\Default\ | Select-String "unittest" > uni.txt

这条命令会将 gn ls out/Default 的输出结果通过管道传递给 Select-String 命令,Select-String 命令会筛选出包含 "unittest" 的行,并将结果重定向到 uni.txt 文件中。

执行完上述命令后,uni.txt 文件中将包含 out/Default 目录下所有名称中包含 "unittest" 的目标。

挑选合适的GN目标

上面命令的输出为:

//:chrome_official_builder_no_unittests
//base:base_unittests
//base:base_unittests__runner
//base:path_service_unittest
//base/allocator/partition_allocator/src/partition_alloc:unittests
//base/numerics:unittests
//base/test:run_all_unittests
//build/rust/tests/bindgen_static_fns_test:bindgen_static_fns_test_lib_unittests
//build/rust/tests/bindgen_static_fns_test:bindgen_static_fns_test_lib_unittests_exe
//build/rust/tests/bindgen_static_fns_test:bindgen_static_fns_test_lib_unittests_metadata
//build/rust/tests/bindgen_test:bindgen_test_lib_unittests
//build/rust/tests/bindgen_test:bindgen_test_lib_unittests_exe
//build/rust/tests/bindgen_test:bindgen_test_lib_unittests_metadata
//build/rust/tests/test_aliased_deps:test_aliased_deps_unittests
//build/rust/tests/test_aliased_deps:test_aliased_deps_unittests_exe
//build/rust/tests/test_aliased_deps:test_aliased_deps_unittests_metadata
//build/rust/tests/test_bin_crate:test_bin_crate_unittests
//build/rust/tests/test_bin_crate:test_bin_crate_unittests_exe
//build/rust/tests/test_bin_crate:test_bin_crate_unittests_metadata
//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_dylib_unittests
//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_dylib_unittests__runner
//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_unittests
//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_unittests__runner
//build/rust/tests/test_rlib_crate:target1_test_rlib_crate_v0_2_unittests
//build/rust/tests/test_rlib_crate:target1_test_rlib_crate_v0_2_unittests_exe
//build/rust/tests/test_rlib_crate:target1_test_rlib_crate_v0_2_unittests_metadata
//build/rust/tests/test_rlib_crate:target2_test_rlib_crate_v0_2_unittests
.............

通过上述方法,我们可以快速定位到感兴趣的目标。在众多的目标中,我们需要根据自己的需求挑选合适的 GN 目标进行构建和测试。

例如,在上面的列表中,//base:base_unittests 是一个非常常用的目标,它代表了 Chromium 的 Base 库的单元测试。Base 库是 Chromium 的基础库,提供了许多核心功能,例如字符串处理、容器、算法等。

通常,GN 目标的命名遵循一定的规范,可以帮助我们理解目标的作用:

  • // 开头的目标表示根目录下的目标。
  • : 后面的部分表示目标的名称。
  • _unittests 后缀通常表示该目标是一个单元测试目标。
  • __runner后缀的目标通常表示测试框架或者用于控制测试执行的脚本
  • _exe 后缀通常表示该目标用于生成可执行文件
  • _metadata后缀的目标通常表示该目标包含元数据信息

根据这些命名规范,我们可以大致判断目标的作用,并选择我们需要的目标。

Base库

在 Chromium 的开发过程中,Base 库的单元测试是一个非常重要的环节。通过运行 //base:base_unittests,我们可以确保 Base 库的功能正确性,并及时发现潜在的问题。

因此,在进行 Chromium 的开发或者调试时,我们经常需要构建和运行 //base:base_unittests 目标。

结语

在本篇文章中,我们学习了如何使用 gn ls 命令查看 GN 目标,并结合 PowerShell 的 Select-String 命令来过滤和查找特定的目标。我们还介绍了如何根据 GN 目标的命名规范来理解目标的作用,并以 Base 库的单元测试为例,说明了如何挑选合适的 GN 目标进行构建和测试。

在本系列后续的文章中,我们将介绍更多关于 GN 的高级用法和技巧,例如如何进行测试、如何进行代码覆盖率分析等,帮助你更加深入地理解和掌握 Chromium 的构建系统。最后,根据我们的学习计划挑选出的 GN 目标为 base:base_unittests,在接下来的文章中我们将继续围绕它展开GN使用的学习。

标签:tests,unittests,目标,build,test,GN,Chromium,rust
From: https://blog.csdn.net/qqyy_sj/article/details/144624483

相关文章

  • 5.2 sap cloud connector - UI Certificate - Self-Signed Certificate
    修改管理员账号,原来Administrator太长了。日常关注两件事1更新SubaccountCertificate账号是登录bptcockpit的邮箱......
  • Agentic Design Patterns
    AgenticDesignPatternshttps://www.deeplearning.ai/the-batch/how-agents-can-improve-llm-performance/?ref=dl-staging-website.ghost.io Reflection:TheLLMexaminesitsownworktocomeupwithwaystoimproveit. ToolUse:TheLLMisgiventoolssuch......
  • Antdesign React之markdown文档渲染
    能够渲染代码块,样式可以让ai生成,使用前需要安装对应依赖markdownview.tsximportReactfrom'react';importReactMarkdownfrom'react-markdown';import{PrismasSyntaxHighlighter}from'react-syntax-highlighter';import{vscDarkPlus}from're......
  • DTS207TC Database Development and Design
    Modulecodeand TitleDatabase Developmentand Design ( DTS207TC)SchoolTitleSchoolofAIandAdvanced ComputingAssignmentTitle002:AssessmentTask 2 (CW)Submission Deadline23:59, 24th Dec (Friday)Database Deve......
  • 数据集-目标检测系列- 篮球 检测数据集 basketball >> DataBall
    数据集-目标检测系列-篮球检测数据集basketball>>DataBallDataBall助力快速掌握数据集的信息和使用方式,会员享有百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球:“DataBall-X数据球(free)”贵在坚持!数据样例项目地址:*相关项目1)数据集......
  • Antdesign React之API展示页面
    本项目基于antdesignpro,点击调试后跳转弹窗,左边展示public/doc路径下的md文档并且通过markdownview渲染成md,右侧是json编辑器index.tsximportReact,{useState,useMemo}from'react';import{Layout,Menu,theme,Row,Col}from'antd';import{HomeOutlined,Fir......
  • 计算机视觉:YOLO V5目标检测算法模型
    1.YOLOV5模型概述1.1YOLOv5的概念YOLOv5是一种基于深度学习的目标检测模型,相较于YOLOv4,YOLOv5模型在目标检测精度和速度上都有了显著的提升。YOLOv5模型基于PyTorch开发,利用主干网络、检测头和损失函数等模块,能够实现对图像中多个目标的快速检测和定位。1.2YOLOv5模型......
  • 计算机视觉:YOLO V1目标检测
    1目标检测概述1.1目标检测        目标检测(ObjectDetection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置计算机视觉中关于图像识别的四类任务        分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什......
  • 【寒武纪mlu220模型移植】(一)目标检测YoLoV8
    前言:目标检测可能是大家用的比较多的,先完善这一篇吧。yolov5的导出可以参考官方文档。并且博主比较懒,已经做过一遍的事情,不想验证第二遍,如果有步骤错误或者疏漏导致中间遇到了问题,可以先自己debug,流程大致就是这样的。一、修改源码首先是拉取yolov8最新的源码,最新的commit即可,任......
  • 德普微一级代理 DP200N25PGNI DP200N25BGNI DPMOS N-MOSFET 250V 67A 17.5mΩ
    Features• Uses advancedDPMOS technology• Extremely low on-resistanceRDS(on)• Excellent QgxRDS(on) product(FOM)• Qualifiedaccordingto JEDEC criteriaProduct SummaryApplications• Motor control anddrive• Battery management......