MEGAcmd for Developer — MEGAcmd 面向开发者
v1.0.0构建、调试和为MEGAcmd项目(C++/CMake/vcpkg)做出贡献。当用户需要编译、设置开发环境、运行测试、创建包或理解MEGAcmd的内部架构时使用。不要用于用户操作(上传、同步、备份)——那是不同的技能。
运行时依赖
版本
RPM(Fedora/SUSE)
安装命令
点击复制技能文档
MEGAcmd — 开发者指南 本技能的功能 关于构建、调试、测试和为MEGAcmd仓库做出贡献的说明。本技能适用于需要编译项目、设置环境或调查C++源代码的开发人员。 警告:如果用户只想使用MEGAcmd(上传、同步、备份),请不要激活此技能。那样是使用megacmd技能的目的。 何时使用 用户想要从源代码编译/安装MEGAcmd 用户想要设置开发环境(CMake、vcpkg) 用户想要运行测试(单元或集成) 用户想要调试服务器/客户端问题 用户想要创建包(Debian、RPM、Arch、Synology、Windows) 用户想要贡献代码或拉取请求 用户询问内部代码架构 何时不使用 用户想要上传、下载、同步、备份或共享 —— 使用megacmd 用户想要使用MEGA网页界面 用户想要通过预制包安装MEGAcmd(mega.nz/cmd) 项目结构 MEGAcmd/ ├── CMakeLists.txt # 主要构建系统(488行) ├── vcpkg.json # vcpkg管理的依赖 ├── src/ │ ├── megacmd_server_main.cpp # 服务器入口点 │ ├── megacmd.cpp/h # MEGAcmd核心 │ ├── megacmdexecuter.cpp/h # 命令执行器 │ ├── megacmdutils.cpp/h # 实用工具 │ ├── megacmdcommonutils.cpp/h # 公共实用工具 │ ├── megacmdlogger.cpp/h # 日志系统 │ ├── megacmd_fuse.cpp/h # FUSE支持 │ ├── megacmdshell/ # 交互式shell │ ├── client/ # 客户端(mega-exec + mega-包装器) │ │ ├── megacmd_client_main.cpp │ │ ├── megacmdclient.cpp/h │ │ ├── mega- # Bash包装器(Linux/macOS) │ │ └── win/mega-.bat # Windows包装器 │ ├── comunicationsmanager.cpp/h # IPC(文件套接字/命名管道) │ ├── configurationmanager.cpp/h # 配置 │ ├── listeners.cpp/h # SDK监听器 │ ├── sync_command.cpp/h # 同步命令 │ ├── sync_ignore.cpp/h # 忽略模式 │ └── sync_issues.cpp/h # 同步问题 ├── tests/ │ ├── unit/ # 单元测试(C++) │ ├── integration/ # 集成测试(C++) │ └── .sh, *.py # Shell/Python测试 ├── build/ │ ├── cmake/modules/ # CMake模块 │ ├── installer/ # 安装程序(NSIS、DMG、脚本) │ ├── megacmd/ # Debian包 │ └── templates/megacmd/ # RPM spec、PKGBUILD、DSC ├── contrib/ │ ├── docs/ # 文档(76个命令+指南) │ ├── sanitizer/ # ASan、LSan、TSan抑制 │ └── updater/ # 更新文件列表 ├── sdk/ # MEGA SDK(git子模块) └── jenkinsfile/ # CI/CD(Jenkins) 构建前提 # Git + 子模块 git clone https://github.com/meganz/MEGAcmd.git cd MEGAcmd && git submodule update --init --recursive 编译 # 调试 cmake -B build/build-cmake-Debug -DCMAKE_BUILD_TYPE=Debug cmake --build build/build-cmake-Debug -j$(nproc) # 发布 cmake -B build/build-cmake-Release -DCMAKE_BUILD_TYPE=Release cmake --build build/build-cmake-Release -j$(nproc) # 带测试 cmake -B build/build-cmake-Debug -DCMAKE_BUILD_TYPE=Debug -DENABLE_MEGACMD_TESTS=ON cmake --build build/build-cmake-Debug -j$(nproc) 安装(Linux/macOS) sudo cmake --install build/build-cmake-Release 重要构建选项 标志 描述 -DVCPKG_ROOT=/path vcpkg路径(默认:../vcpkg) -DCMAKE_CXX_COMPILER_LAUNCHER=ccache 使用ccache -DENABLE_MEGACMD_TESTS=ON 构建测试 -DCMAKE_INSTALL_PREFIX=/path 安装目录 CMake目标 目标类型 描述 mega-cmd-server 可执行文件 服务器 mega-cmd 可执行文件 交互式shell mega-exec 可执行文件 非交互式客户端 mega-cmd-updater 可执行文件 更新程序 mega-cmd-tests-unit 可执行文件 单元测试 mega-cmd-tests-integration 可执行文件 集成测试 LMegaCmdCommonUtils 静态库 公共实用工具 LMegacmdServer 静态库 服务器逻辑 LMegacmdClient 静态库 客户端逻辑 依赖(vcpkg) 所需 pcre、cryptopp、curl(带zstd)、icu、libsodium、sqlite3 可选(vcpkg.json特性) 特性 依赖 激活 use-openssl openssl CMake use-mediainfo libmediainfo CMake use-freeimage freeimage + jasper CMake use-ffmpeg ffmpeg(avcodec、avformat、swresample、swscale) CMake use-libuv libuv CMake(WebDAV/FTP) use-pdfium pdfium CMake use-readline readline CMake megacmd-enable-tests gtest -DENABLE_MEGACMD_TESTS=ON 测试 # 单元测试 ./build/build-cmake-Debug/tests/mega-cmd-tests-unit # 集成测试(需要服务器运行) ./build/build-cmake-Debug/tests/mega-cmd-tests-integration # Python测试 python3 tests/megacmd_put_test.py python3 tests/megacmd_get_test.py python3 tests/megacmd_find_test.py Docker # 标准构建 docker build -f build-with-docker/Dockerfile.cmake . # Synology跨编译 docker build -f build/SynologyNAS/