问题描述
在CMAKE文件中,平台架构由以下代码帮助决定。不考虑ARM板(armv7l,armhf等),我只比较前三个字母“ arm”。但是STREQUAL比较所有字符。那么还有其他的CMAKE函数,例如strncmp(),它们仅根据用户的输入比较字符,还是在“ armv7l”中搜索“ arm”?
if( ${ARCHITECTURE} STREQUAL "x86_64" )
set(arch_x86_64 ON CACHE BOOL "X86_64 Architecture")
else()
if( ${ARCHITECTURE} STREQUAL "arm")```
解决方法
那么还有其他的CMAKE函数,例如strncmp(),它们仅根据用户的输入比较字符,还是在“ armv7l”中搜索“ arm”?
您可以提取子字符串并进行比较:
string(SUBSTRING "${ARCHITECTURE}" 0 3 tmp)
if("${tmp}" STREQUAL "arm")
但是只使用正则表达式:
if("${ARCHITECTURE}" MATCHES "^arm")