1. cmake分割字符串
以linux-4.8.16為例獲取4 8 16
set(SEXY_STRING "linux-4.8.16")
string(REPLACE "-" ";" Linux_Name ${SEXY_STRING})
list(GET Linux_Name 1 LINUX_VERSION)
MESSAGE(STATUS "show linux version ${LINUX_VERSION}")
string(REPLACE "." ";" VERSION_LIST ${LINUX_VERSION})
message(STATUS "string = ${SEXY_STRING}")
message(STATUS "list = ${VERSION_LIST}")
list(LENGTH SEXY_LIST len)
message(STATUS "len = ${len}")
list(GET VERSION_LIST 0 MY_PROGRAM_VERSION_MAJOR)
list(GET VERSION_LIST 1 MY_PROGRAM_VERSION_MINOR)
list(GET VERSION_LIST 2 MY_PROGRAM_VERSION_PATCH)
MESSAGE(STATUS "BUILD MY_PROGRAM_VERSION_MAJOR ${MY_PROGRAM_VERSION_MAJOR}")
MESSAGE(STATUS "BUILD MY_PROGRAM_VERSION_MINOR ${MY_PROGRAM_VERSION_MINOR}")
MESSAGE(STATUS "BUILD MY_PROGRAM_VERSION_PATCH ${MY_PROGRAM_VERSION_PATCH}")
結果:
-- show linux version 4.8.16
-- string = linux-4.8.16
-- list = 4;8;16
-- len = 0
-- BUILD MY_PROGRAM_VERSION_MAJOR 4
-- BUILD MY_PROGRAM_VERSION_MINOR 8
-- BUILD MY_PROGRAM_VERSION_PATCH 16