跳到主要内容

z_kmpkg_prettify_command_line

注意

这是 kmpkg 内部用于实现核心逻辑的辅助函数。 其行为和参数可能会以不兼容的方式突发变更,且无任何通知。 请勿在自定义端口中使用该函数

将一组命令行参数格式化为人机易读的字符串,主要用于日志输出、错误提示等场景,确保命令行参数的展示格式清晰且符合平台规范。

用法

z_kmpkg_prettify_command_line(<out-var> <argument>...)

参数说明

<out-var>

必填参数,指定输出变量名称。该变量会被赋值为格式化后的命令行字符串

<argument>...

必填参数,传入需要格式化的命令行参数列表。
参数格式需与 kmpkg_execute_required_process()COMMAND 参数保持一致(即按“命令+参数”的顺序传入,支持包含空格、特殊字符的参数)。

核心说明

  1. 格式化规则
    • 自动为包含空格/特殊字符的参数添加引号(适配 Windows/Linux/macOS 不同的命令行引号规范);
    • 对转义字符、路径分隔符等做归一化处理,确保跨平台展示一致;
    • 按“命令 + 空格分隔参数”的形式拼接字符串,提升可读性(例如将 cmake -S . -B build 格式化为清晰的字符串,而非分号分隔的列表)。
  2. 核心用途: 该函数是 kmpkg 内部执行进程类函数(如 kmpkg_execute_required_processkmpkg_execute_build_process)的底层依赖,用于在日志中打印“正在执行的命令行”,方便调试和错误排查。
  3. 幂等性: 多次格式化同一组参数会得到完全一致的字符串,无随机/平台相关的差异。

示例(仅作内部逻辑参考)

以下示例模拟 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 进程执行逻辑的基础组件:

源码

scripts/cmake/z_kmpkg_prettify_command_line.cmake