CMake 3.0 and later
Use the string(CONCAT) command:
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}")
Although CMake 3.0 and newer versions support quotation marks for continuing arguments , you cannot indent the second or subsequent lines without inserting a space in the indent in your line.
CMake 2.8 and older
You can use a list. Each list item can be placed on a new line:
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}")
A list used without quotes is concatenated without spaces:
message(STATUS "Version: " ${MYPROJ_VERSION_LIST}) -- Version: 1.0.0-rc1
If you really need a string, you can first convert the list to a string:
string(REPLACE ";" "" MYPROJ_VERSION "${MYPROJ_VERSION_LIST}") message(STATUS "Version: ${MYPROJ_VERSION}")
Any semicolons in the source lines will be considered as separators of the list items and deleted. They need to escape:
set(MY_LIST "Hello World " "with a \;semicolon")
Douglas Royds May 22 '13 at 23:27 2013-05-22 23:27
source share