ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Audacity 4 如何使用 CMake Presets 配置 Debug 与 ASan 构建?

Audacity 4 如何使用 CMake Presets 配置 Debug 与 ASan 构建? Audacity 4 如何使用 CMake Presets 配置 Debug 与 ASan 构建【免费下载链接】audacityAudio Editor项目地址: https://gitcode.com/GitHub_Trending/au/audacity如果你正在参与 Audacity 4 的开发需要一份带调试符号的 Debug 构建或者希望用 AddressSanitizerASan插桩来排查内存问题可以直接使用仓库根目录的 CMakePresets.json。这个文件定义了audacity-debug、audacity-asan和audacity-release三个预设配合 BUILDING.md 描述的标准 CMake 命令行流程可以在不手写一长串-D参数的情况下完成配置。前提条件与 BUILDING.md 中的依赖清单一致Git、CMake、一个包管理器、CMake 生成器文档中实测为 Ninja、C 编译器实测 MSVC 或 g以及带 Additional LibrariesQt 5 Compatibility Module、Qt Network Authorization、Qt Shader Tools、Qt State Machines的 Qt 6.10。注意 BUILDING.md 开头声明这些说明仍在完善中work-in-progress会以 Audacity 4 正式发版为准。仓库中的预设与公共配置CMakePresets.json 声明version: 2cmakeMinimumRequired为 CMake 3.20而项目入口 CMakeLists.txt 第 7 行要求cmake_minimum_required(VERSION 3.24)所以实际使用 CMake 3.24 或更高版本。四个预设的关系如下预设名displayName继承关键 cache 变量basehiddenBase Configuration—binaryDir为${sourceDir}/build/${presetName}、生成器Ninja、CMAKE_EXPORT_COMPILE_COMMANDSON、CMAKE_INSTALL_PREFIXsrc/appaudacity-debugAudacity [Debug]baseCMAKE_BUILD_TYPEDebug、CMAKE_CXX_FLAGS-DQT_QML_DEBUGaudacity-asanAudacity [ASan]audacity-debugMUSE_COMPILE_ASANONaudacity-releaseAudacity [RelWithDebInfo]baseCMAKE_BUILD_TYPERelWithDebInfo要点所有可见预设都继承隐藏的base因此构建目录会落在build/预设名如build/audacity-debug安装前缀是src/app生成器固定为 Ninja。audacity-asan继承audacity-debug即 ASan 构建同时是 Debug 配置只是额外打开MUSE_COMPILE_ASAN。仓库中的 MuseScore 框架来自muse子模块CMakeLists.txt 中MUSE_FRAMEWORK_SRC_PATH指向${CMAKE_SOURCE_DIR}/muse/framework所以获取源码时要带上子模块BUILDING.md 给出的命令是git clone --recurse-submodules https://gitcode.com/GitHub_Trending/au/audacity。确认预设已被 CMake 加载在仓库根目录执行cmake --list-presets输出中应能看到audacity-debugAudacity [Debug]、audacity-asanAudacity [ASan]、audacity-releaseAudacity [RelWithDebInfo]三个预设。看不到时先检查 CMake 版本和 Ninja 是否已加入 PATH——BUILDING.md 要求 Git、CMake、Ninja、包管理器、编译器和 Qt 都在系统 PATH 中否则需要在 CMakeCache 中手工指定。配置 Debug 构建在仓库根目录执行cmake --preset audacity-debug cmake --build build/audacity-debug cmake --install build/audacity-debug这是 BUILDING.md 中「Standard CMake building」命令在 preset 下的对应写法cmake -S . -B build/被cmake --preset取代构建目录由base预设的binaryDir决定所以后两条命令指向build/audacity-debug而不是build/。CMAKE_BUILD_TYPEDebug在构建脚本里带来的实际效果均见 buildscripts/cmake/SetupBuildEnvironment.cmake通用部分CMAKE_BUILD_TYPE匹配DEBUG时add_definitions(-DQT_QML_DEBUG)与预设里CMAKE_CXX_FLAGS中的-DQT_QML_DEBUG对应非 Debug 则定义NDEBUG和QT_NO_DEBUG。GCC/Clang/MinGW 分支将CMAKE_CXX_FLAGS_DEBUG设为-g。在 SetupConfigure.cmake 中当构建配置为 app 且BUILD_IS_DEBUG时会打开MUSE_MODULE_GLOBAL_LOGGER_DEBUGLEVEL。BUILDING.md 还给出两条替代路径用 Qt Creator 打开CMakeLists.txt、以自动检测到的 Qt kit 配置后直接 BuildQML 调试支持最好但 Windows 上调试较慢Windows 下用 VSCode 打开工作区后按 F5首次会构建并安装、之后很快。配置 ASan 构建ASan 构建同样只改配置命令cmake --preset audacity-asan cmake --build build/audacity-asan cmake --install build/audacity-asanMUSE_COMPILE_ASANON的生效位置在 buildscripts/cmake/SetupBuildEnvironment.cmake 的 GCC 与 Clang 分支中if (MUSE_COMPILE_ASAN) add_compile_options(-fsanitizeaddress) add_compile_options(-fno-omit-frame-pointer) link_libraries(-fsanitizeaddress) endif()即编译选项加-fsanitizeaddress和-fno-omit-frame-pointer链接时追加-fsanitizeaddressClang 在 Linux 上还会额外-latomic。需要明确的是该文件中 MSVC 与 MinGW 分支没有对应的 ASan 处理也就是说这份构建脚本只保证在 GCC/Clang 工具链下应用 ASan 插桩。另外 SetupConfigure.cmake 的UTEST构建配置会在未启用代码覆盖率时默认设置MUSE_COMPILE_ASAN ON那是 CI 单元测试路径与本节的桌面应用构建无关。验证构建是否成功文档中可直接使用的判断依据cmake --preset配置成功后会在build/下生成build/audacity-debug或build/audacity-asan目录后续cmake --build/cmake --install都指向它。构建退出码。CI 脚本 buildscripts/ci/linux/ci_build.cmake 的做法可作参考execute_process捕获构建结果RESULT_VARIABLE BUILD_RESULT大于 0 就message(FATAL_ERROR Failed build)。命令行下同理cmake --build返回非零即构建失败。cmake --install成功后产物进入base预设设定的安装前缀src/app。Windows VSCode 场景下按 F5 会「build and install everything the first time」随后运行 Audacity 本体即验证了整条链路。限制与注意事项BUILDING.md 明确声明这些构建说明是 work-in-progressAudacity 4 发版前还会调整遇到细节出入以最新文档为准。ASan 预设的编译器分支覆盖见上一节GCC/Clang 生效MSVC/MinGW 分支中无 ASan 开关处理。如果需要在不修改仓库的前提下覆盖默认配置CMakeLists.txt 中有一个本地覆盖入口存在SetupConfigure.local.cmake时会优先于SetupConfigure被包含可把本机差异写进这个本地文件。与本文任务无关的audacity-releaseRelWithDebInfo预设可留作日常验证用构建Debug 预设中CMAKE_EXPORT_COMPILE_COMMANDSON会在构建目录输出编译命令文件供 C 工具链使用。【免费下载链接】audacityAudio Editor项目地址: https://gitcode.com/GitHub_Trending/au/audacity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表