-1
CMake를 사용하여 두 개의 문자열에서 가장 큰 공통 접두어를 찾아야합니다. 나는 CMake를 사용하여 그것에 대해 아직 아무것도 발견하지 못했다. CMake 자체는 매우 제한되어 있으므로 최선의 방법에 대해 궁금합니다.CMake에서 두 개의 문자열의 가장 큰 접두어
CMake를 사용하여 두 개의 문자열에서 가장 큰 공통 접두어를 찾아야합니다. 나는 CMake를 사용하여 그것에 대해 아직 아무것도 발견하지 못했다. CMake 자체는 매우 제한되어 있으므로 최선의 방법에 대해 궁금합니다.CMake에서 두 개의 문자열의 가장 큰 접두어
가장 큰 공통 접두어를 찾는 것은 일반적으로 두 문자열의 시작 부분에서 시작하는 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()