lin*_*llo 13 string list cmake
我有一个程序版本变量
set(MY_PROGRAM_VERSION "2.5.1")
我想保存2,5,1到3个不同的变量,比如
MY_PROGRAM_VERSION_MAJOR=2
MY_PROGRAM_VERSION_MINOR=5
MY_PROGRAM_VERSION_PATCH=1
但我真的不知道如何访问CMake列表中的单个元素.有些想法?
del*_*ooo 30
According to this and this i would guess you need to transform the string to something like a list literal and use GET on your new list:
cmake_minimum_required(VERSION 2.8)
set(MY_PROGRAM_VERSION "2.5.1")
string(REPLACE "." ";" VERSION_LIST ${MY_PROGRAM_VERSION})
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)
CMake 的string命令就是这里的方法。
如果您自己设置变量的值并且没有从某些第三方来源获取它,您可能需要改用此方法:
function(SetVersionNumber PREFIX VERSION_MAJOR VERSION_MINOR VERSION_PATCH)
  set(${PREFIX}_VERSION_MAJOR ${VERSION_MAJOR} PARENT_SCOPE)
  set(${PREFIX}_VERSION_MINOR ${VERSION_MINOR} PARENT_SCOPE)
  set(${PREFIX}_VERSION_PATCH ${VERSION_PATCH} PARENT_SCOPE)
  set(${PREFIX}_VERSION
        "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
        PARENT_SCOPE)
endfunction()
[...]
SetVersionNumber(MY_PROGRAM 2 5 1)
message(${MY_PROGRAM_VERSION_MAJOR})
message(${MY_PROGRAM_VERSION_MINOR})
message(${MY_PROGRAM_VERSION_PATCH})
message(${MY_PROGRAM_VERSION})
使您不必进行正则表达式巫毒;)