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: