# TinyPlayer **Repository Path**: ObjOne/TinyPlayer ## Basic Information - **Project Name**: TinyPlayer - **Description**: 简单基于ffmpeg的播放器 - **Primary Language**: C++ - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-01-07 - **Last Updated**: 2022-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 工程说明 基于ffmpeg的程序 ## 目录结构说明 | 目录 | 说明| |---|---| | cmake | 自定义cmake函数库 | | src | 源代码目录 | | share | 资源目录,字体文件和国际化语言文件 | | src/libs | 基础库目录 | | src/libs/coreui | 主界面源代码 | | src/libs/utils | 公共模块源代码 | | src/libs/comm | 通讯服务模块源代码 | | src/app | 应用入口源代码 | | src/include | 全局包含目录 | ### windows 环境安装 msys mingw64 qt 1. 安装msys2 https://mirrors.tuna.tsinghua.edu.cn/help/msys2/ 下载64位版本 1. 修改C:\msys64\etc\pacman.d下面得mirrorlist.*文件,把清华镜像相关得移动到最前面 1. 安装基础包 ```bash # 更新系统包 pacman -Syu pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake bash wget p7zip pacman pacman-mirrors msys2-runtime pacman -S mingw-w64-x86_64-llvm mingw-w64-x86_64-polly mingw-w64-x86_64-clang mingw-w64-x86_64-compiler-rt mingw-w64-x86_64-clang-tools-extra mingw-w64-x86_64-qt5 mingw-w64-x86_64-qt-creator pacman -S mingw-w64-x86_64-OpenSceneGraph ``` ### 编码规范(简要) #### 类与结构体定义 - 在C++代码中,`struct`结构体定义中,尽量不要使用`typedef` - `class`和`struct`的**私有属性**使用`m_`前缀 - `class`和`struct`的**公有属性**不使用前缀,但可以使用属性的类型前缀,如:带`\0`结束的字符串,使用`sz`作为前缀 - 在基于`Qt`框架的的项目中尽量使用`QString`或`QByteArray`代替`char*`或`char[]` - 若需要对外导出的类或结构体,添加`#include "globals.h"`引用,并在class关键字后添加`CSB_EXPORT` - 不需要对外导出的类,尽量使用隐藏定义,在头文件进行声明,在源代码文件中进行定义,参考`CommServer.h` ```c++ // MyClass.h class MyClassPrivate; // 声明私有隐藏类,不对外公开细节,在源代码中定义 class MyClass { public: MyClass(); ~MyClass(); QString privateField1() const; private: // 将MyClass所有私有属性在`d_ptr`中定义 MyClassPrivate* d_ptr; }; // MyClass.cpp class MyClassPrivate { private: friend class MyClass; // 与MyClass共享私有属性,允许MyClass访问非公有属性和成员函数 QString m_PrivateField1; // 对外保护属性 }; QString MyClass::privateFields1() const { return d_ptr->m_privateField1; } ```