cmake:separate_arguments

本文介绍了一个用于解析命令行参数的功能,能够将空格分隔的字符串解析为分号分隔的列表。支持多种操作系统下的解析规则,如UNIX_COMMAND、WINDOWS_COMMAND等,并提供了PROGRAM选项来处理可执行文件的路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将命令行参数解析为分号分隔的列表。

separate_arguments(<variable> <mode> [PROGRAM [SEPARATE_ARGS]] <args>)

将空格分隔的字符串< args >解析为项列表,并将该列表以分号分隔的标准形式存储在< variable >中。

此函数用于解析命令行参数。整个命令行必须作为一个字符串在参数< args >中传递。

具体的解析规则取决于操作系统。它们由< mode >参数指定,该参数必须是以下关键字之一:

  • UNIX_COMMAND
    • 参数之间用不带引号的空格隔开。
    • 同时考虑单引号和双引号对。
    • 反斜杠转义下一个文字字符(\"相当于");
    • 没有特殊的转义符(\n只是n)。
  • WINDOWS_COMMAND:
    • Windows命令行使用运行时库在启动时用于构造argv的相同语法进行解析。
    • 它用没有双引号的空格分隔参数。
    • 反斜杠是文字,除非它们位于双引号之前。
    • 详细信息请参见MSDN文章解析C命令行参数。
  • NATIVE_COMMAND:
    • 3.9新版功能。
    • 如果主机系统是Windows,则执行WINDOWS_COMMAND模式。否则,执行UNIX_COMMAND模式。

PROGRAM:

  • 3.19新版功能。
  • < args >中的第一个项假定为可执行文件,将在系统搜索路径中搜索,或作为完整路径保留。
    • 如果未找到,< variable>将为空。
    • 否则,< variable>是两个元素的列表:
      • 程序的绝对路径
      • 在< args >中作为字符串出现的任何命令行参数

例如:

separate_arguments (out UNIX_COMMAND PROGRAM "cc -c main.c")
  • 列表的第一个元素:/path/to/cc
  • 列表的第二个元素:" -c main.c"

SEPARATE_ARGS

  • 当指定了PROGRAM选项的子选项时,命令行参数也会被分割并存储在< variable >中。

例如:

separate_arguments (out UNIX_COMMAND PROGRAM SEPARATE_ARGS "cc -c main.c")
  • out的内容将是: /path/to/cc;-c;main.c
separate_arguments(<var>)

将< var >的值转换为分号分隔的列表。所有空格都用“;”替换。这有助于生成命令行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值