2016-08-29 1 views

Antwort

0

Das Finden des größten gemeinsamen Präfixes erfolgt normalerweise in einer linearen O (n) -Suche, die am Anfang beider Strings beginnt. CMake ermöglicht den Vergleich von Zahlen und Strings mit if command und LESS/GREATER/... Dies ermöglicht die Implementierung der Standardmethode zum Auffinden des größten gemeinsamen Präfixes:

function(largest_common_prefix a b prefix) 

# minimum of lengths of both strings 
string(LENGTH ${a} len_a) 
string(LENGTH ${a} len_b) 

if(${len_a} LESS ${len_b}) 
    set(len ${len_a}) 
else() 
    set(len ${len_b}) 
endif() 

# iterate over the length 
foreach(end RANGE 1 ${len}) 
    # get substrings 
    string(SUBSTRING ${a} 0 ${end} sub_a) 
    string(SUBSTRING ${b} 0 ${end} sub_b) 

    # if equal store, otherwise break 
    if (${sub_a} STREQUAL ${sub_b}) 
     set(${prefix} ${sub_a} PARENT_SCOPE) 
    else() 
     break() 
    endif() 
endforeach() 

endfunction() 
Verwandte Themen