-1
CMakeを使用して2つの文字列の最大共通接頭辞を見つける必要があります。私はまだCMakeを使って何も見つけられませんでした。 CMake自体は非常に限られているので、私は最高のアプローチについて疑問に思います。CMakeの2つの文字列の最大共通接頭辞
CMakeを使用して2つの文字列の最大共通接頭辞を見つける必要があります。私はまだCMakeを使って何も見つけられませんでした。 CMake自体は非常に限られているので、私は最高のアプローチについて疑問に思います。CMakeの2つの文字列の最大共通接頭辞
最も一般的な接頭辞の検索は、通常、両方の文字列の先頭から始まる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()