Doxygen源码分析: 根目录文件简要介绍

news2024/12/23 17:35:16

2023-05-18 22:54:02
ChrisZZ imzhuo@foxmailcom
Hompage https://github.com/zchrissirhcz

在这里插入图片描述

文章目录

    • 1. doxygen 版本
    • 2. 文件介绍
      • `Dockerfile`
      • `LICENSE`
      • `.dockerignore`
      • `.codedocs`
      • `VERSION`
      • `.editorconfig`
      • `LANGUAGE.HOWTO`
      • `BUILD.txt`
      • `INSTALL`
      • `.gitignore`
      • `README.md`
      • `CMakeLists.txt`

1. doxygen 版本

zz@Legion-R7000P% git log             
commit acb04c2a27e29b82e697d20ac0561034f0a16e20 (HEAD -> master, origin/master, origin/HEAD)
Author: Dimitri van Heesch <doxygen@gmail.com>
Date:   Sun May 14 12:12:28 2023 +0200

    Rename GENERATE_SITEMAP to SITEMAP_URL
zz@Legion-R7000P% tree -L 1
.
├── addon
├── BUILD.txt
├── cmake
├── CMakeLists.txt
├── deps
├── doc
├── doc_internal
├── Dockerfile
├── examples
├── INSTALL
├── LANGUAGE.HOWTO
├── libversion
├── libxml
├── LICENSE
├── README.md
├── src
├── templates
├── testing
├── VERSION
├── vhdlparser
└── winbuild

13 directories, 8 files

2. 文件介绍

列出根目录所有文件, 总计12个

zz@Legion-R7000P% find . -maxdepth 1 -type f
./Dockerfile
./LICENSE
./.dockerignore
./.codedocs
./VERSION
./.editorconfig
./LANGUAGE.HOWTO
./BUILD.txt
./INSTALL
./.gitignore
./README.md
./CMakeLists.txt

zz@Legion-R7000P% find . -maxdepth 1 -type f | wc -l
12

Dockerfile

给出了 Linux 下的编译环境, 免去用户手动配置环境。

LICENSE

用的是 GPLv2 协议。

.dockerignore

docker 忽略文件的配置文件。

.codedocs

bing上没找到搜索结果,看起来像是类似 doxygen 的配置文件 Doxyfile 的一个文件, EXCLUDE 是忽略的目录和文件,FILE_PATTERNS 是需要生成文档(被扫描)的文件模式。

VERSION

存放了 doxygen 的版本号, 当前版本为 1.9.7。

.editorconfig

是 EditorConfig 的配置文件, 配置为: 所有文件默认用2空格缩进, Python 文件则用4空格缩进。

LANGUAGE.HOWTO

给出了在 doxygen 中新添加一门语言支持(翻译)的简要步骤, 这里的语言指的是自然语言,如英语,中文等。

  1. 给出语言的名称。

  2. 编辑 src/config.xml

  • 寻找 <option>, 找到其中 id='OUTPUT_LANGUAGE 的那一个
  • 使用你想添加的语言, 添加一个新的值
  1. 基于 translator_en.h, 拷贝、改文件名。我们用 translator_xx.h 表示这个具体的文件。

  2. 编辑 language.cpp

  • 添加头文件包含:
    #include "translator_xx.h"
    
  • setTranslator() 中添加:
             case OUTPUT_LANGUAGE_t::YourLanguage: theTranslator = new TranslatorYourLanguage; break;
    
  1. 编辑 translator_xx.h:
  • 修改 TRANSLATOR_EN_H 为 TRANSLATOR_XX_H (#include#define 都改)
  • 修改 TranslatorEnglish 为 TranslatorYourLanguage
  • 在成员函数 idLanguage() 中, 修改 “english” 为你的语言(只允许小写字母)。设置 trISOLang()getLanguageString() 返回值为你的语言。
    根据实际清情况, 你可能还想修改 latexLanguageSupportCommand()
  • 编辑所有以 tr 开头的成员函数里的返回值。注意大小写和标点符号。
    为了输入特殊字符(包括重音),你需要:
    a) 用 UTF-8 编码
    b) 可以直接写, 也可以用 html 代码例如 &auml 来表示 umlaut (也就是 ä)
  1. 重新构建整个工程, 例如

    cd path/where/you/build
    cmake --build .
    
  2. 现在可以在 Doxygen 的配置文件中使用 OUTPUT_LANGUAGE = 你的语言

  3. 发送 translator_xx.h 给 Doxygen 作者, 这样他可以添加到 Doxygen 代码主仓库。

BUILD.txt

给出了构建(编译+链接+安装)整个工程的一些指导建议。

Doxygen 使用 cmake 构建工程, 支持多个平台。 具体怎么用 cmake 就略过了。

Doxygen 的 cmake 提供了如下 option:

option解释
build_wizard构建 doxygen 的 GUI 前端
build_app例子工程, 展示了怎样嵌入 doxygen 到一个应用程序中
build_parse转换源代码并且打印出代码元素之间的依赖关系
build_xmlparser例子工程, 展示了怎样解析 doxygen 的 XML 输出
build_search构建外部的搜索工具(doxysearch 和 doxyindexer)
build_doc构建用户手册
use_sqlite3增加 sqlite3 输出的支持(实验性质)
use_libclang增加 libclang 解析的支持
win_static在 Windows 上使用 /MT 的 CRT, 替代 /MD
force_qt=<vers>强制doxywizard使用指定的主要版本进行构建,这可以是Qt5或Qt6

可以使用 cmake-L 参数打印这些 option 的取值:

cmake -L path/to/root/of/doxygen/source/tree

INSTALL

内容很简单, 安装步骤请具体查看在线网页 https://www.doxygen.nl/manual/install.html

.gitignore

从 gitignore 文件可以看出作者的一些编程习惯:

*~
.*sw?
\#*
.DS_Store

作者是用 vim 开发的, 并且处理了 mac 系统的 DS_Store 文件。

tags

.idea

/examples/html/*
/examples/latex/*

examplels 目录看来是日常调试验证用的, 子目录 html 和 latex 直接被忽略的。

README.md

doxygen 有三个作用:

  1. 它可以生成在线文档浏览器(HTML)和/或离线参考手册(LaTeX),来自一组文档化的源文件。
    还支持生成RTF(MS Word)、PostScript等格式的输出,超链接PDF、压缩HTML、DocBook和Unix手册页。
    文档是直接从来源中提取的,这使得使文档与源代码保持一致要容易得多。

  2. 您可以配置doxygen来从未记录的代码中提取代码结构源文件。这对快速找到你的路非常有用
    源分布。Doxygen还可以可视化通过包括依赖关系图、继承等方式的各种元素图和协作图,它们都是自动生成的。

  3. 您也可以使用doxygen来创建普通文档(就像作者为doxygen用户手册和doxygen网站)。

doxygen 在 2013 年以前是用 svn 的, 2013 年则迁移到 git, 并在 github 上托管代码。

Doxygen 作者是 Dimitri van Heesch.

CMakeLists.txt

这是整个工程构建的入口描述文件, 代码有230行, 需要配合各个子目录的构建文件 (例如 src/CMakeLists.txt)才可以弄清楚, 因此本篇略过, 留作下一篇处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一图看懂 chardet 模块:字符编码检测器,兼容 Python2 和 Python3,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 chardet 模块&#xff1a;字符编码检测器&#xff0c;兼容 Python2 和 Python3&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9ca;模块…

【1++的C++初阶】之内存管理

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C初阶】 文章目录 一&#xff0c;C/C的内存分布二&#xff0c;malloc&#xff0c;realloc&#xff0c;calloc的区别三&#xff0c;C的内存管理- -new和delete初识new和deletenew和delete操作…

宝塔面板webhook 使用教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 背景1、介绍一下Webhook2、使用步骤1.安装git2.安装WebHook3.添加WebHook4.配置git 钩子 &#xff08;码云示例&#xff09;5.私有项目还需要做以下操作 背景 最近…

C语言算法--桶排序

1-什么是桶排序法 什么是桶排序法&#xff1f;其实说白了就是把需要排列的元素分到不同的桶中&#xff0c;然后我们对这些桶里的元素进行排序的一种方式&#xff0c;然后我们在根据桶的顺序进行元素的合并。&#xff08;不过前提是要确定桶的数量以及大小&#xff09; 按照稍…

[数字图像处理]第四章 频率域滤波

文章目录 第四章 频率域滤波笔记&#xff1a;4.1 背景4.1.1 傅里叶级数和变换简史 4.2 基本概念4.2.1 复数4.2.2 傅里叶级数4.2.3 冲激及其取样特性4.2.5 卷积 4.3 取样和取样函数的傅里叶变换4.3.1 取样4.3.2 取样函数的傅里叶变换4.3.3 取样定理4.3.4 混淆4.3.5 有取样后的数…

微服务—Redis实用篇-黑马头条项目-附近商户功能(使用GEO实现)

微服务—Redis实用篇-黑马头条项目-附近商户功能(使用GEO实现) 1、附近商户 1.1、附近商户-GEO数据结构的基本用法 GEO就是Geolocation的简写形式&#xff0c;代表地理坐标。Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;帮助我们根据经纬…

【C++】设计模式

目录 设计模式概述 单例模式 饿汉模式 懒汉模式 工厂模式 简单工厂模式 工厂方法模式 抽象工厂模式 观察者模式 设计模式概述 设计模式&#xff1a;一套反复被人使用、多数人知晓的、经过分类编目的代码设计经验的总结。一种固定的写代码的思维逻辑方式&#xff0c;一…

chatgpt赋能Python-python3_8降级3_7

Python 3.8降级至3.7&#xff1a;为什么需要这么做&#xff1f; Python 3.8是Python编程语言的最新版本&#xff0c;拥有许多令人兴奋的新功能和改进。但是&#xff0c;在某些情况下&#xff0c;您可能需要降级Python版本&#xff0c;特别是当某些库或框架不兼容Python 3.8时。…

AI绘图实战(十一):将纸质儿童画修改为电子照片/3D Openpose插件使用 | Stable Diffusion成为设计师生产力工具

S&#xff1a;AI能取代设计师么&#xff1f; I &#xff1a;至少在设计行业&#xff0c;目前AI扮演的主要角色还是超级工具&#xff0c;要顶替&#xff1f;除非甲方对设计效果无所畏惧~~ 预先学习&#xff1a; 安装及其问题解决参考&#xff1a;《Windows安装Stable Diffusion …

在vscode调试c++代码报错

在vscode调试c代码报错 一、我在vscode调试c代码,报错:错误原因&#xff1a;解决办法: 二、上面的问题解决之后&#xff0c;报错问题变了错误原因&#xff1a;路径中的“随笔”是中文&#xff0c;路径中不能出现中文&#xff01;解决办法&#xff1a;将路径中的“随便”改成英文…

『python爬虫』25. 接入超级鹰处理验证码(保姆级图文)

目录 1. 验证码平台的使用1.1 下载demo程序1.2 注册后生成软件id1.3 查验证码类型1.4 demo文件中填写我们的用户参数测试效果 2. 分析超级鹰的登录3. 完整代码总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 1.…

Golang每日一练(leetDay0070) 移除链表元素、计数质数

目录 203. 移除链表元素 Remove Linked-list Elements &#x1f31f; 204. 计数质数 Count Primes &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每…

chatgpt赋能Python-python3_8安装pyqt5

Python3.8安装PyQt5教程 介绍PyQt5 PyQt5是一个用于创建桌面应用程序的Python模块。它利用Qt框架的本地GUI应用程序开发工具包&#xff0c;为Python开发者提供了一种方便的方式来创建跨平台的应用程序。PyQt5支持在Windows&#xff0c;MacOS和Linux等主要桌面操作系统上构建G…

ChatGPT api 接口调用测试

参考文档&#xff1a; https://platform.openai.com/docs/quickstart/build-your-application示例说明&#xff1a; 本示例会生成一个简单的ChatGPT api接口调用server程序&#xff0c;该程序可以给用户输入的宠物类别为宠物取三个名字。打开网页后&#xff0c;会看到用户输入…

chatgpt赋能Python-python3_8_5怎么保存

Python 3.8.5&#xff1a;什么是它&#xff0c;为什么它重要&#xff0c;以及如何安装和保存&#xff1f; Python是当今世界上最受欢迎的编程语言之一。Python 3.8.5是该语言的最新版本&#xff0c;它引入了一些重要的改进和新特性。这篇文章将介绍Python 3.8.5并向您展示如何…

macOS Ventura 13.4 (22F66) Boot ISO 原版可引导镜像下载

本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.4 包括以下增强功…

[创业之路-68]:科创板上市公司符合哪些条件

上交所发布《关于在上交所设立科创板并试点注册制相关情况答记者问》。上交所将认真落实习指示&#xff0c;在证监会的指导下&#xff0c;积极研究制订科创板和注册制试点方案&#xff0c;向市场征求意见并履行报批程序后实施。科创板是独立于现有主板市场的新设板块&#xff0…

chatgpt赋能Python-python3_8_2怎么用

Python 3.8.2 指南&#xff1a;介绍、使用和结论 Python 3.8.2 是近期发布的一个重大更新&#xff0c;它提供了很多新的特性和改进&#xff0c;使得 Python 编程更加高效、方便和强大。本文将向您介绍 Python 3.8.2 的主要特性和使用方法&#xff0c;帮助您更好的利用 Python …

【前后端分离博客】学习笔记05 --- canal

一、概述 使用canal rabbitMQ 实现 MySQL 和 Elasticsearch 的数据同步 图解&#xff1a; 流程如下&#xff1a; 给mysql开启binlog功能 mysql完成增、删、改操作都会记录在binlog中 canal监听binlog变化并发送消息到MQ&#xff0c;项目接收消息并实时更新elasticsearch中…

IS215UCVEH2AE speed tronic涡轮控制PCB板

IS215UCVEH2AETPMC815-11IS215UCVEM08B IS215UCVEH2AE是通用电气公司Mark VI Speedtronic控制系统的一个组件。该板的功能相当于VME控制卡。VME卡架是Mark VI的标准架&#xff0c;有13或21槽架可供选择。 IS215UCVEH2AE是一个带有附加前面板的矩形板。面板顶部和底部有一个固…