z_kmpkg_prettify_command_line
注意
这是 kmpkg 内部用于实现核心逻辑的辅助函数。 其行为和参数可能会以不兼容的方式突发变更,且无任何通知。 请勿在自定义端口中使用该函数。
将一组命令行参数格式化为人机易读的字符串,主要用于日志输出、错误提示等场景,确保命令行参数的展示格式清晰且符合平台规范。
用法
z_kmpkg_prettify_command_line(<out-var> <argument>...)
参数说明
<out-var>
必填参数,指定输出变量名称。该变量会被赋值为格式化后的命令行字符串。
<argument>...
必填参数,传入需要格式化的命令行参数列表。
参数格式需与 kmpkg_execute_required_process() 的 COMMAND 参数保持一致(即按“命令+参数”的顺序传入,支持包含空格、特殊字符的参数)。
核心说明
- 格式化规则:
- 自动为包含空格/特殊字符的参数添加引号(适配 Windows/Linux/macOS 不同的命令行引号规范);
- 对转义字符、路径分隔符等做归一化处理,确保跨平台展示一致;
- 按“命令 + 空格分隔参数”的形式拼接字符串,提升可读性(例如将
cmake -S . -B build格式化为清晰的字符串,而非分号分隔的列表)。
- 核心用途:
该函数是 kmpkg 内部执行进程类函数(如
kmpkg_execute_required_process、kmpkg_execute_build_process)的底层依赖,用于在日志中打印“正在执行的命令行”,方便调试和错误排查。 - 幂等性: 多次格式化同一组参数会得到完全一致的字符串,无随机/平台相关的差异。
示例(仅作内部逻辑参考)
以下示例模拟 kmpkg 内部如何使用该函数格式化编译命令并打印日志:
# 定义要执行的命令行参数
set(build_command clang++ -o main main.cpp -std=c++20 "-I/My Path/includes")
# 格式化命令行
z_kmpkg_prettify_command_line(formatted_cmd ${build_command})
# 打印格式化后的命令(日志输出)
message(STATUS "Executing build command: ${formatted_cmd}")
# 输出结果:Executing build command: clang++ -o main main.cpp -std=c++20 "-I/My Path/includes"
关联内部文件
该函数被以下核心文件依赖,是 kmpkg 进程执行逻辑的基础组件:
- kmpkg_execute_build_process.cmake
- kmpkg_execute_required_process.cmake
- kmpkg_execute_required_process_repeat.cmake