2016-06-29 319 views
0

我有一个路径,我想摆脱一个特定的路径 开始路径。这是我目前的路径CMake的 - 使用get_filename_component

macro(MY_MACRO base) 

    foreach(ITEM ${ARGN}) 
     get_filename_component(ITEM_PATH ${ITEM} DIRECTORY) 
     get_filename_component(ITEM_EXT ${ITEM} EXT) 
     source_group("${ITEM_PATH}" FILES ${ITEM}) 
     MESSAGE ("${ITEM_PATH}") 
    endforeach() 

    endmacro() 

上述输出这个

/Users/admin/main/project/module/pilot/pilot/src/proA 
/Users/admin/main/project/module/pilot/guide/src/proB 
得到一个路径

我希望它只显示从最后一级开始的路径 它应该只显示文件夹试点 之后的路径,所以它应该显示类似这样的内容

pilot/src/proA 
guide/src/proB 

不完整路径

+0

只是好奇,为什么? – Joel

回答

1

命令file(RELATIVE_PATH)计算相对路径。用法很简单:

file(RELATIVE_PATH 
    ITEM_PATH_REL # Output variable 
    "/Users/admin/main/project/module/pilot" # Base directory 
    ${ITEM_PATH} # Absolute path to the file 
) 
message("Relative path: ${ITEM_PATH_REL}") 
+0

当我尝试这样说它说文件RELATIVE_PATH必须通过文件的完整路径: –

+0

是的,最后一个参数应该是全路径。这确实是写在这个例子的评论中。 – Tsyvarev