2016-08-29 2 views
-1

CMake를 사용하여 두 개의 문자열에서 가장 큰 공통 접두어를 찾아야합니다. 나는 CMake를 사용하여 그것에 대해 아직 아무것도 발견하지 못했다. CMake 자체는 매우 제한되어 있으므로 최선의 방법에 대해 궁금합니다.CMake에서 두 개의 문자열의 가장 큰 접두어

답변

0

가장 큰 공통 접두어를 찾는 것은 일반적으로 두 문자열의 시작 부분에서 시작하는 O (n) 선형 검색에서 수행됩니다. CMake는 if command과 LESS/GREATER/..를 사용하여 숫자와 문자열을 비교할 수 있습니다. 이렇게하면 가장 큰 공통 접두어를 찾는 표준 방법을 구현할 수 있습니다.

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() 
관련 문제