get_filename_component

获取完整文件名中的特定部分。

版本 3.20 中更改: 此命令已被 cmake_path() 命令取代,除了 REALPATH,它现在由 file(REAL_PATH) 提供,以及 PROGRAM,现在可在 separate_arguments(PROGRAM) 中使用。

版本 3.24 中更改: 提供查询 Windows 注册表功能的未记录功能已被 cmake_host_system_information(QUERY WINDOWS_REGISTRY) 命令取代。

get_filename_component(<var> <FileName> <mode> [CACHE])

<var> 设置为 <FileName> 的一个部分,其中 <mode> 是以下选项之一:

  • DIRECTORY - 不含文件名的目录。

  • NAME - 不含目录的文件名。

  • EXT - 文件名最长扩展名(例如 d/a.b.c 中的 .b.c)。

  • NAME_WE - 不含目录和最长扩展名的文件名。

  • LAST_EXT - 文件名最后一个扩展名(例如 d/a.b.c 中的 .c)。

  • NAME_WLE - 不含目录和最后一个扩展名的文件名。

  • PATH - DIRECTORY 的旧别名(用于 CMake <= 2.8.11)。

版本 3.14 中添加: 添加了 LAST_EXTNAME_WLE 模式。

路径将以正斜杠返回,并且不带尾随斜杠。如果指定了可选的 CACHE 参数,则结果变量将添加到缓存中。

get_filename_component(<var> <FileName> <mode> [BASE_DIR <dir>] [CACHE])

3.4 版本新增。

<var> 设置为 <FileName> 的绝对路径,其中 <mode> 是以下选项之一:

  • ABSOLUTE - 文件的完整路径。

  • REALPATH - 现有文件的完整路径,其中符号链接已解析。

如果提供的 <FileName> 是相对路径,则它将相对于给定的基目录 <dir> 进行评估。如果未提供基目录,则默认基目录将是 CMAKE_CURRENT_SOURCE_DIR

路径将以正斜杠返回,并且不带尾随斜杠。如果指定了可选的 CACHE 参数,则结果变量将添加到缓存中。

get_filename_component(<var> <FileName> PROGRAM [PROGRAM_ARGS <arg_var>] [CACHE])

将在系统搜索路径中查找 <FileName> 中的程序,或者将其保留为完整路径。如果 PROGRAM 存在且 PROGRAM_ARGS 也存在,则 <FileName> 字符串中存在的任何命令行参数都将从程序名称中分离出来并存储在 <arg_var> 中。这用于将程序名称与其命令行字符串中的参数分离开。

另请参阅