cmake函数: get_filename_component
get_filename_component
:获取完整文件名的特定部分
目录
get_filename_component(<var> <Filename> <mode> [CACHE])
-
字符串解析处理
-
的可取值范围: - DICECTORY:没有文件名的目录,路径返回时带有正斜杠,并且没有尾部斜杠。
- NAME:不带名录的文件名
- EXT:文件名的最长扩展名
- NAME_WE:不带目录或最长扩展名的文件名
- LAST_EXT:文件名的最后扩展名
- NAME_WLE:文件目录或最后扩展名的文件名
- PATH:DIRECTORY的就别名(cmake <= 2.8.11)
SET(filename /tmp/cmake.dat.log.tmp) get_filename_component(d ${filename} DIRECTORY) get_filename_component(n ${filename} NAME ABSOLUTE) get_filename_component(nw ${filename} NAME_WE ABSOLUTE) get_filename_component(nwl ${filename} NAME_WLE ABSOLUTE) get_filename_component(e ${filename} EXT ABSOLUTE) get_filename_component(le ${filename} LAST_EXT ABSOLUTE) message("${filename} DIRECTOYR:${d}") message("${filename} NAME:${n}") message("${filename} NAME_WE:${nw}") message("${filename} NAME_WLE:${nwl}") message("${filename} EXT:${e}") message("${filename} LAST_EXT:${le}") # output /tmp/cmake.data.log.tmp DIRECTOYR:/tmp /tmp/cmake.data.log.tmp NAME:cmake.dat.log.tmp /tmp/cmake.data.log.tmp NAME_WE:cmake /tmp/cmake.data.log.tmp NAME_WLE:cmake.dat.log /tmp/cmake.data.log.tmp EXT:.dat.log.tmp /tmp/cmake.data.log.tmp LAST_EXT:.tmp
get_filename_component(<var> <FileName> <mode> [BASE_DIR <dir>] [CACHE])
-
指定路径与文件名进行拼接
-
可取值范围为 - ABSOLUTE:文件的完整路径
get_filename_component(absolute_file_name "cmake.dat" ABSOLUTE) message("CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}") message("absolute_file_name: ${absolute_file_name}") set(base_dir "/tmp/") get_filename_component(absolute_file_name "cmake.dat" ABSOLUTE BASE_DIR ${base_dir}) message("absolute_file_name: ${absolute_file_name}") # output CMAKE_CURRENT_SOURCE_DIR: /home/fl/tmp/test_cmake absolute_file_name: /home/fl/tmp/test_cmake/cmake.dat absolute_file_name: /tmp/cmake.dat - REALPATH:如果
为链接文件,则显示完整路径
get_filename_component(relative_file_name "srs_tree" REALPATH) message("CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}") message("relative_file_name: ${relative_file_name}") set(base_dir "/test_source/") get_filename_component(relative_file_name "test_tree" REALPATH BASE_DIR ${base_dir}) message("relative_file_name: ${relative_file_name}") # output CMAKE_CURRENT_SOURCE_DIR: /home/fl/tmp/av_io relative_file_name: /home/fl/test_tree relative_file_name: /test_source/srs_tree
get_filename_component(<var> <FileNae> PROGRAM [PROGRAM_ARGS <arg_var>] [CACHE])
获取应用程序的名称和参数
get_filename_component(program "ls -l -h" PROGRAM PROGRAM_ARGS args) message("program: ${program}") message("args: ${args}") # output 系统可识别程序 program: /usr/bin/ls args: -l -h get_filename_component(program "lm -l -h" PROGRAM PROGRAM_ARGS args) message("program: ${program}") message("args: ${args}") # output 不可识别程序 program: args:
本文来自博客园,作者:flxx,转载请注明原文链接:https://www.cnblogs.com/faithlocus/p/15613720.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步