国语视界

 找回密码
 立即注册
查看: 625|回复: 9

[技术交流] 在Windows下编译 tsMuxer 给 tsMuxerGUI 添加简体中文选项

[复制链接]
  • TA的每日心情
    开心
    17-5-5 16:26
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2

    主题

    62

    帖子

    213

    积分

    排长

    Rank: 3Rank: 3

    大洋
    1253
    矿工
    0
    发表于 20-6-8 15:33 | 显示全部楼层 |阅读模式
    本帖最后由 lanvas2008 于 20-6-9 14:20 编辑

    废话不多说直接进主题

    tsmuxer github https://github.com/justdan96/tsMuxer

    首先安装 msys2
    msys2官方网站
    https://www.msys2.org/

    msys2直接下载连接
    https://github.com/msys2/msys2-installer/releases/download/2020-06-02/msys2-x86_64-20200602.exe

    在使用msys2前先熟悉几个安装编译过程中要用到重要的命令行工具 make,qmake,pacman,cmake

    make
    是一个命令工具,它解释Makefile 中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。

    qmake
    qmake是 qt附带的工具,qmake能够自动生成Makefile、Microsoft Visual Studio 专案文件 和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。

    pacman
    pacman是arclinux中的软件管理工具,也是widows上msys2默认的软件管理工具。pacman可以直接从网络上的软件仓库下载安装及删除软件,自动处理依赖关系,类似ubuntu中的apt-get。

    在msys2里面最常用的几个命令为:

    pacman -Sy: 从服务器下载新的软件包数据库(实际上就是下载远程仓库最新软件列表到本地)。

    pacman -Su: 升级所有已安装的软件包。

    这两个命令可以合并为一个命令 pacman -Syu

    pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。

    pacman -S --needed 软件名1 软件名2: 安装软件,但不重新安装已经是最新的软件。

    CMake
    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    下面开始安装msys2
    直接运行 msys2-x86_64-20200602.exe 一路默认即可,全部的软件安装大概需要25g的磁盘空间吧,如C盘容量不足就不要安装在C盘了

    为msys2添加国内源

    打开 msys64\etc\pacman.d 文件夹找到以下3个文件
    mirrorlist.mingw32
    mirrorlist.mingw64
    mirrorlist.msys

    用文本编辑器打开,删除原来所有内容,然后添加以下内容

    mirrorlist.mingw32 添加以下内容
    1. ##
    2. ## 32-bit Mingw-w64 repository mirrorlist
    3. ##

    4. ## 中国科学技术大学
    5. Server = https://mirrors.ustc.edu.cn/msys2/mingw/i686
    6. ## 中国科学技术大学 电信线路
    7. Server = https://chinanet.mirrors.ustc.edu.cn/msys2/mingw/i686
    8. ## 清华大学
    9. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
    10. ## 浙江大学
    11. Server = http://mirrors.zju.edu.cn/msys2/mingw/i686
    12. ## 华为
    13. Server = https://mirrors.huaweicloud.com/msys2/mingw/i686
    复制代码

    mirrorlist.mingw64 添加以下内容
    1. ##
    2. ## 64-bit Mingw-w64 repository mirrorlist
    3. ##

    4. ## 中国科学技术大学
    5. Server = https://mirrors.ustc.edu.cn/msys2/mingw/x86_64
    6. ## 中国科学技术大学 电信线路
    7. Server = https://chinanet.mirrors.ustc.edu.cn/msys2/mingw/x86_64
    8. ## 清华大学
    9. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
    10. ## 浙江大学
    11. Server = http://mirrors.zju.edu.cn/msys2/mingw/x86_64
    12. ## 华为
    13. Server = https://mirrors.huaweicloud.com/msys2/mingw/x86_64
    复制代码

    mirrorlist.msys 添加以下内容
    1. ##
    2. ## MSYS2 repository mirrorlist
    3. ##

    4. ## 中国科学技术大学
    5. Server = https://mirrors.ustc.edu.cn/msys2/msys/$arch
    6. ## 中国科学技术大学 电信线路
    7. Server = https://chinanet.mirrors.ustc.edu.cn/msys2/msys/$arch
    8. ## 清华大学
    9. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
    10. ## 浙江大学
    11. Server = http://mirrors.zju.edu.cn/msys2/msys/$arch
    12. ## 华为
    13. Server = https://mirrors.huaweicloud.com/msys2/msys/$arch
    复制代码

    把msys2添加到右键菜单 方便在任何地方打开msys2,把下面的内容复制到文本文件中 然后另存为批处理 文件后缀为 cmd 或 bat。

    导入后的右键菜单。

    1. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-32" /f /d "MSYS2 MinGW 32-Bit"
    2. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-64" /f /d "MSYS2 MinGW 64-Bit"

    3. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-32" /f /v "icon" /d "%cd%\msys2.ico"
    4. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-64" /f /v "icon" /d "%cd%\msys2.ico"

    5. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-32\command" /f /d "%cd%\msys2_shell.cmd -mingw32 -here"
    6. @reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\MSYS2-64\command" /f /d "%cd%\msys2_shell.cmd -mingw64 -here"
    复制代码

    到这里msys2的基本安装和设置就完成了,接下来就是安装编译器了。

    打开msys64.运行 msys2.exe 首先同步最新数据和更新
    1. pacman -Syu
    复制代码

    全部更新完成后开始安装编译环境

    MSYS2 基础包安装
    1. pacman -S --needed git yasm cvs svn zlib-devel libelf-devel base-devel zip p7zip sshpass
    复制代码

    mingw32 gcc编译器安装
    1. pacman -S --needed mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_ttf mingw-w64-i686-nasm mingw-w64-i686-ninja mingw-w64-i686-zlib mingw-w64-i686-clang mingw-w64-i686-cmake mingw-w64-i686-freetype mingw-w64-i686-toolchain
    复制代码


    mingw64 gcc编译器安装
    1. pacman -S --needed mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-nasm mingw-w64-x86_64-ninja mingw-w64-x86_64-zlib mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-toolchain mingw-w64-cross-toolchain
    复制代码


    QT5 安装
    1. pacman -S --needed mingw-w64-x86_64-qt5-static mingw-w64-i686-qt5-static
    复制代码


    可以分开安装 也可以合在一起一次输入安装
    1. pacman -S --needed git yasm cvs svn zlib-devel libelf-devel base-devel zip p7zip sshpass mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_ttf mingw-w64-i686-nasm mingw-w64-i686-ninja mingw-w64-i686-zlib mingw-w64-i686-clang mingw-w64-i686-cmake mingw-w64-i686-freetype mingw-w64-i686-toolchain mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-nasm mingw-w64-x86_64-ninja mingw-w64-x86_64-zlib mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-toolchain mingw-w64-cross-toolchain mingw-w64-x86_64-qt5-static mingw-w64-i686-qt5-static
    复制代码


    等待全部安装完成后 编译环境就算安装好了

    把qt添加到环境变量
    打开 msys64\etc\skel 文件夹 .bashrc 文件 用文本编辑器打开 在前面插入
    1. # QT5
    2. export PATH=$PATH:$MINGW_PREFIX/qt5-static/bin
    复制代码

    接下来去 tsmuxer github 仓库 下载源代码

    解压缩源代码到任意盘的根目录,打开源代码文件夹新建 build 文件夹 进入 build 文件夹 右键 MSYS2 MinGW 32-Bit 或 MSYS2 MinGW 64-Bit

    生成 tsmuxer 的 makefile 文件
    1. cmake ../ -G Ninja -DTSMUXER_STATIC_BUILD=true
    复制代码

    编译tsmuxer 并把 tsmuxer.exe 复制到 bin 文件夹
    1. ninja && cp -u tsMuxer/tsmuxer.exe ../bin/
    复制代码

    生成 tsmuxergui 的 makefile 文件
    1. qmake ../tsMuxerGUI
    复制代码

    编译 tsmuxergui 并把 tsmuxergui.exe 复制到 bin 目录
    1. make release && cp -u release/tsMuxerGUI.exe ../bin/
    复制代码

    关于源码包里面自带的自动编译脚本 rebuild_msys2.sh ,运行这个脚本会报错无法正常编译,我把脚本修改了下这样就能在任何地方正常编译了。
    1. #!/usr/bin/bash

    2. cd ../
    3. if [ ! -d tsMuxer-master ] ; then
    4.   git clone https://github.com/justdan96/tsMuxer.git
    5. fi
    6. cd tsMuxer-master
    7. if [ ! -d build ] ; then
    8.   if [ -d $MINGW_PREFIX/qt5-static ] ; then
    9.    echo 'load(win32/windows_vulkan_sdk)' > $MINGW_PREFIX/qt5-static/share/qt5/mkspecs/common/windows-vulkan.conf
    10.    echo 'QMAKE_LIBS_VULKAN       =' >>     $MINGW_PREFIX/qt5-static/share/qt5/mkspecs/common/windows-vulkan.conf
    11.   fi
    12.   mkdir build
    13. fi
    14. git pull
    15. cd build
    16. cmake ../ -G Ninja -DTSMUXER_STATIC_BUILD=true
    17. ninja && cp -u tsMuxer/tsmuxer.exe ../bin/
    18. if [ -d $MINGW_PREFIX/qt5-static ] ; then
    19.   $MINGW_PREFIX/qt5-static/bin/qmake ../tsMuxerGUI
    20.   make release && cp -u release/tsMuxerGUI.exe ../bin/
    21. fi
    22. cd ..
    复制代码

    运行脚本脚本的命令是 ./脚本文件名.sh,如我们要运行 tsMuxer 自动编译脚本 rebuild_msys2.sh
    1. ./rebuild_msys2.sh
    复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    评分

    参与人数 3威望 +200 大洋 +1100 收起 理由
    nnezyj + 50 + 300 dalao
    why1812 + 50 + 300 赞一个!
    wj102901 + 100 + 500 dalao

    查看全部评分

  • TA的每日心情
    开心
    17-5-5 16:26
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2

    主题

    62

    帖子

    213

    积分

    排长

    Rank: 3Rank: 3

    大洋
    1253
    矿工
    0
     楼主| 发表于 20-6-8 15:35 | 显示全部楼层
    本帖最后由 lanvas2008 于 20-6-9 14:43 编辑

    给程序添加“简体中文” 语言选项

    打开 tsMuxerGUI\translations 文件夹,复制 about_en.html 和 tsmuxergui_en.ts 文件,并重命名为 about_zh.html 和 tsmuxergui_zh.ts

    打开 tsMuxerGUI\CMakeLists.txt 找到
    1. qt5_add_translation(QM_FILES translations/tsmuxergui_en.ts translations/tsmuxergui_ru.ts)
    复制代码

    把简体中文语言文件添加进去
    1. qt5_add_translation(QM_FILES translations/tsmuxergui_en.ts translations/tsmuxergui_zh.ts translations/tsmuxergui_ru.ts)
    复制代码

    打开 tsMuxerGUI\images.qrc 找到
    1.   <file alias="about_en.html">translations/about_en.html</file>
    复制代码

    在下面插入
    1.   <file alias="about_zh.html">translations/about_zh.html</file>
    复制代码

    打开 tsMuxerGUI\translations.qrc 找到
    1. <file alias="tsmuxergui_en.qm">tsmuxergui_en.qm</file>
    复制代码

    在下面插入
    1. <file alias="tsmuxergui_zh.qm">tsmuxergui_zh.qm</file>
    复制代码

    打开 tsMuxerGUI\tsMuxerGUI.pro 找到
    1. TRANSLATIONS = translations/tsmuxergui_en.ts translations/tsmuxergui_ru.ts
    复制代码

    把简体中文语言文件添加进去
    1. TRANSLATIONS = translations/tsmuxergui_en.ts translations/tsmuxergui_zh.ts translations/tsmuxergui_ru.ts
    复制代码

    打开 tsMuxerGUI\tsmuxerwindow.cpp 找到
    1.     comboBox->addItem("English", "en");  // 0th index is also used as default if the language isn't set in the settings.
    复制代码

    在下面插入
    1.     comboBox->addItem(QString::fromUtf8("简体中文"), "zh");
    复制代码

    这样修改完成后编译出来的程序就有 简体中文 选项了

    QT使用

    Qt Linguist QT语言专家
    http://download.qt.io/linguist_releases/qtlinguistinstaller-5.12.2.exe

    Qt Designer QT设计师用来设计QT程序的图形界面(GUI)
    http://download.qt.io/official_releases/qtdesignstudio/1.5.0/qt-designstudio-windows-x86-1.5.0-community.exe

    Qt Creator QT的开发环境(IDE)
    http://download.qt.io/official_releases/qtcreator/4.12/4.12.2/qt-creator-opensource-windows-x86_64-4.12.2.exe

    QT集成开发工具,已包含以上3个 QT 程序
    http://download.qt.io/official_releases/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe

    如要修改主界面布局,运行 Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\designer.exe 打开源代码中 tsMuxerGUI 目录下的 tsmuxerwindow.ui 文件

    如要汉化界面语言,运行 Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\linguist.exe 打开源代码中 tsMuxerGUI\translations 目录下的 tsmuxergui_zh.ts 文件

    汉化界面语言
    linguist.exe 打开 tsmuxergui_zh.ts 文件

    要汉化的有2个 ui 界面 muxForm.ui 和 tsmuxerwindow.ui
    muxForm.ui              是混流进度界面要汉化的不多
    tsmuxerwindow.ui    是程序主界面要汉化的就多了很多

    如要汉化 input 先点 源文下的 input 然后 在下面的 “Transformation to 简体中文 (中国)” 输入  “输入” 然后保存更改,再重新编译程序。


    界面设计就没什么好说的了,随便折腾吧。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    20-7-10 20:14
  • 签到天数: 248 天

    [LV.8]以坛为家I

    10

    主题

    750

    帖子

    550

    积分

    工作组

    Rank: 14Rank: 14Rank: 14Rank: 14

    大洋
    20528
    矿工
    30
    发表于 20-6-9 07:31 | 显示全部楼层
    这技术牛了!支持大神
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    20-7-9 10:08
  • 签到天数: 90 天

    [LV.6]常住居民II

    0

    主题

    234

    帖子

    50

    积分

    列兵

    Rank: 1

    大洋
    26
    矿工
    6
    发表于 20-6-9 09:03 | 显示全部楼层
    这可是电脑高手必备神器
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    20-7-7 13:48
  • 签到天数: 473 天

    [LV.9]以坛为家II

    4

    主题

    4842

    帖子

    551

    积分

    连长

    Rank: 4

    大洋
    319
    矿工
    5
    QQ
    发表于 20-6-9 10:07 | 显示全部楼层
    这个真是牛逼啊,小白根本看不懂啊,要好好学习学习,感谢楼主的技术普及。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    20-7-9 11:55
  • 签到天数: 104 天

    [LV.6]常住居民II

    1

    主题

    843

    帖子

    346

    积分

    排长

    Rank: 3Rank: 3

    大洋
    65
    矿工
    30
    发表于 20-6-9 15:09 | 显示全部楼层
    这太牛了!顶起来!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    20-7-10 10:22
  • 签到天数: 107 天

    [LV.6]常住居民II

    3

    主题

    476

    帖子

    373

    积分

    排长

    Rank: 3Rank: 3

    大洋
    4419
    矿工
    31
    发表于 20-6-9 16:43 | 显示全部楼层
    技术贴必须支持一个,多谢楼主分享。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    20-7-10 10:40
  • 签到天数: 307 天

    [LV.8]以坛为家I

    26

    主题

    7021

    帖子

    967

    积分

    连长

    Rank: 4

    大洋
    5653
    矿工
    30
    发表于 20-6-10 06:32 | 显示全部楼层
    这个教程用心了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    20-7-11 00:55
  • 签到天数: 135 天

    [LV.7]常住居民III

    0

    主题

    356

    帖子

    86

    积分

    列兵

    Rank: 1

    大洋
    38
    矿工
    11
    发表于 20-6-12 22:46 | 显示全部楼层
    小白我根本看不懂,要好好学习学习,感谢楼主的技术普及。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    20-7-9 08:15
  • 签到天数: 88 天

    [LV.6]常住居民II

    1

    主题

    750

    帖子

    92

    积分

    列兵

    Rank: 1

    大洋
    1608
    矿工
    3
    发表于 20-6-22 16:24 | 显示全部楼层
    这个绝对是高手贴哦!你太厉害了!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|cnlang.org

    GMT+8, 20-7-11 08:42 , Processed in 0.026867 second(s), 15 queries , Gzip On, MemCache On.

    Powered by Discuz! X3.4

    © 2001-2018 Comsenz Inc.

    快速回复 返回顶部 返回列表