2016-06-29 3 views
0

Ich habe einen Weg, und ich möchte den Weg von einem bestimmten Pfad beginnen bekommen Das ist mein Strompfad istCMAKE - immer einen Weg get_filename_component mit

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() 

Die oben gibt diese

/Users/admin/main/project/module/pilot/pilot/src/proA 
/Users/admin/main/project/module/pilot/guide/src/proB 

Ich möchte, dass es nur den Pfad beginnend von der letzten Ebene zeigt es sollte nur den Pfad nach dem Ordner Pilot zeigen, so sollte es so etwas zeigen

pilot/src/proA 
guide/src/proB 

nicht der vollständige Pfad

+0

Nur neugierig, warum? – Joel

Antwort

1

Befehl file(RELATIVE_PATH) berechnet relativen Pfad. Die Verwendung ist einfach:

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

Wenn ich dies versuche, sagt es Datei RELATIVE_PATH muss einen vollständigen Pfad an die Datei übergeben werden: –

+0

Ja, das letzte Argument sollte vollständigen Pfad sein. Genau das ist in den Kommentaren zu dem Beispiel geschrieben. – Tsyvarev