IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Fcitx5的构建产物会污染项目目录 -> 正文阅读

[开发工具]Fcitx5的构建产物会污染项目目录

做个对比实验

先把源代码打包成tar文件,记录大小。这个大小就是原始大小。然后进入项目目录,新建build文件夹(随意)后在用CMake在build文件夹内构建和编译。完成构建后删除build目录并重新打包,记录新包的大小。比较两个包的大小。

操作

首先在构建之前打包源代码目录,fcitx5.tar,这个打包文件的大小是:7751680字节。然后开始构建:
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/tmp/test_build/fcitx5 …
cmake --build .
然后删除build目录,去外面重新打包。
新打包出来的文件大小是:8345600字节。

原始大小:7751680,新包大小:8345600,多了620KB。所以,构建生成的文件就算单独在特定文件夹下,还是会污染原来的项目的。

那么,到底多了什么文件呢?

为了研究这个问题,同样通过比较。在构建后删除构建目录的项目内,删除.gitignore,然后用git工具把所有的文件添加并提交到git版本跟踪。以这个仓库作为测试场地,删除除了.git这个文件夹外的所有文件,包括隐藏文件。接着,找到Fcitx5的原始的未构建的代码,解压放入仓库里面,连同隐藏文件一起放入,并删除.gitignore。

然后执行git status命令。入下:

$ git status
位于分支 main
尚未暂存以备提交的变更:
  (使用 "git add/rm <文件>..." 更新要提交的内容)
  (使用 "git restore <文件>..." 丢弃工作区的改动)
        删除:     src/modules/spell/dict/en_dict-20121020.tar.gz

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

显然,Fcitx5构建会生成一个gz结尾的文件,位于项目内的src/modules/spell/dict/。为了检查这个文件是不是造成多了620KB的元凶,去新的包内删除这个文件重新打包发现能恢复原始的包尺寸。

多了的文件怎么来的呢?

还得从源代码里面看。我找到文件:

src/modules/spell/dict/CmakeLists.txt

在里面看到这个:

set(SPELL_EN_DICT_VER 20121020)
set(SPELL_EN_DICT "${CMAKE_CURRENT_BINARY_DIR}/en_dict.fscd")
set(SPELL_EN_DICT_SRC "${CMAKE_CURRENT_BINARY_DIR}/en_dict.txt")
set(SPELL_EN_DICT_TAR "en_dict-${SPELL_EN_DICT_VER}.tar.gz")
set(SPELL_EN_DICT_URL
  "https://download.fcitx-im.org/data/en_dict-${SPELL_EN_DICT_VER}.tar.gz")

fcitx5_download(spell-en-download ${SPELL_EN_DICT_URL} ${SPELL_EN_DICT_TAR}
                c44a5d7847925eea9e4d2d04748d442cd28dd9299a0b572ef7d91eac4f5a6ceb)
fcitx5_extract(spell-en-extract "${SPELL_EN_DICT_TAR}" DEPENDS spell-en-download
  OUTPUT ${SPELL_EN_DICT_SRC})

显然,这个文件是在编译的过程中从网站上下载下来的,难怪编译的时候那么慢!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:50:43  更:2021-10-16 19:51:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:33:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码