...

/

The string() Command

The string() Command

Let's learn about the string() command in CMake.

The string() command is used to manipulate strings. It comes with a variety of modes that perform different actions on the string:

  • Search and replace

  • Manipulation

  • Comparison

  • Hashing

  • Generation

  • JSON operations (the last one available since CMake 3.19)

Full details can be found in the online documentation.

string() modes that accept the <input> argument will accept multiple <input> values and concatenate them before the execution of the command:

string(PREPEND myVariable "a" "b" "c")

This is the equivalent of the following:

string(PREPEND myVariable "abc")

Let's explore all available string() modes.

Search and replace

The following modes are available:

  • string(FIND <haystack> <pattern> <out> [REVERSE]) searches for <pattern> in the <haystack> string and writes the position found as an integer to the <out> variable. If the REVERSE flag was used, it searches from the end of the string to the beginning. This works only for ASCII strings (multibyte support isn't provided).

  • string(REPLACE <pattern> <replace> <out> <input>) replaces all occurrences of <pattern> in <input> with <replace> and stores them in the <out> variable.

  • string(REGEX MATCH <pattern> <out> <input>) regex-matches the first occurrence of <pattern> in <input> with ...