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: 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM