CMake 3.0 и новее
Используйте команду string(CONCAT)
:
set(MYPROJ_VERSION_MAJOR "1")
set(MYPROJ_VERSION_MINOR "0")
set(MYPROJ_VERSION_PATCH "0")
set(MYPROJ_VERSION_EXTRA "rc1")
string(CONCAT MYPROJ_VERSION "${MYPROJ_VERSION_MAJOR}"
".${MYPROJ_VERSION_MINOR}"
".${MYPROJ_VERSION_PATCH}"
"-${MYPROJ_VERSION_EXTRA}")
Хотя CMake 3.0 и новее поддерживают продолжение строки аргументов в кавычках , вы не можете сделать отступвторая или последующие строки без получения отступа, включенного в вашу строку.
CMake 2.8 и старше
Вы можете использовать список.Каждый элемент списка можно поместить в новую строку:
set(MYPROJ_VERSION_MAJOR "1")
set(MYPROJ_VERSION_MINOR "0")
set(MYPROJ_VERSION_PATCH "0")
set(MYPROJ_VERSION_EXTRA "rc1")
set(MYPROJ_VERSION_LIST "${MYPROJ_VERSION_MAJOR}"
".${MYPROJ_VERSION_MINOR}"
".${MYPROJ_VERSION_PATCH}"
"-${MYPROJ_VERSION_EXTRA}")
Список, используемый без кавычек, объединяется без пробелов:
message(STATUS "Version: " ${MYPROJ_VERSION_LIST})
-- Version: 1.0.0-rc1
Если вам действительно нужна строка,сначала вы можете преобразовать список в строку:
string(REPLACE ";" "" MYPROJ_VERSION "${MYPROJ_VERSION_LIST}")
message(STATUS "Version: ${MYPROJ_VERSION}")
-- Version: 1.0.0-rc1
Любые точки с запятой в ваших исходных строках будут рассматриваться как разделители элементов списка и удаляться.Они должны быть спасены:
set(MY_LIST "Hello World "
"with a \;semicolon")